首页 > 试题广场 >

为什么要有同源限制?

限制不同源的document或脚本之间的相互访问,以免造成干扰和混乱。

发表于 2019-10-15 18:37:47 回复(0)
:同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。它最早出自Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。
   这里的同源指的是:同协议,同域名和同端口。
在普通的Javascript应用中,我们可以修改Frame的href,或者IFrame的src,以实现GET方式的跨域提交,但是却不能访问跨域的Frame/IFrame中的内容。
   而Ajax它通过XMLHTTP进行异步交互,这个对象同样能够与远程的服务器进行信息交互,而且更加危险的是,XMLHTTP是一个纯粹的Javascript对象,这样的交互过程,是在后台进行的,不被用户察觉。因此,XMLHTTP实际上已经突破了原有的Javascript的安全限制。
   如果我们又想利用XMLHTTP的无刷新异步交互能力,又不愿意公然突破Javascript的安全策略,可以选择的方案就是给XMLHTTP加上严格的同源限制
IFrame的限制还仅仅是不能访问跨域HTMLDOM中的数据,而XMLHTTP则根本上限制了跨域请求的提交。
避免同源策略:
JSON和动态脚本标记
<script type="text/javascript"
  src="http://travel.com/findItinerary?username=sachiko&
  reservationNum=1234&output=json&callback=showItinerary" />  
  当 JavaScript 代码动态地插入 <script> 标记时,浏览器会访问 src 属性中的 URL。这样会导致将查询字符串中的信息发送给服务器。

发表于 2015-10-19 23:15:07 回复(0)
同源策略的本质是一种约定 可以说web的行为就是构建在这种约定之上的 就好比我们人类的行为必须受到法律的约束一样 同源策略的目的就是限制不同源的document或者脚本之间的相互访问 以免造成干扰和混乱
发表于 2019-05-03 22:34:39 回复(0)