同源策略
一.什么是同源策略同源策略,它是由 为什么需要同源策略,这里举个例子:假设现在没有同源策略,会发生什么事情呢?大家知道,JavaScript可以做很多东西,比如:读取/修改网页中某个值。恩,你现在打开了浏览器,在一 个tab窗口中打开了银行网站,在另外一个tab窗口中打开了一个恶意网站,而那个恶意网站挂了一个的专门修改银行信息的JavaScript,当你访问 这个恶意网站并且执行它JavaScript时,你的银行页面就会被这个JavaScript修改,后果会非常严重!而同源策略就为了防止这种事情发生。 下表给出了相对http://store.company.com/dir/page.html同源检测的示例:URL ??结果?? 原因 http://store.company.com/dir2/other.html 成功 参见 源继承来自about:blank,javascript:和data:URLs中的内容,继承了将其载入的文档所指定的源,因为它们的URL本身未指定任何关于自身源的信息。 IE特例在处理同源策略的问题上,IE存在 两个 主要的不同之处。 授信范围(Trust Zones):两个相互之间高度互信的域名,如公司域名(corporate domains),不遵守同源策略的限制。 端口:IE未将端口号加入到同源策略的组成部分之中,因此 http://company.com:81/index.html 和http://company.com/index.html 属于同源并且不受任何限制。 这些例外是非标准的,其它浏览器也未做出支持,但会助于开发基于window RT IE的应用程序。 变更源 页面可以改变本身的源,但会受到一些限制。脚本可以设置document.domain 的值为当前域的一个后缀
这条语句执行之后,页面将会成功地通过对 http://company.com/dir/page.html 的同源检测。而同理,company.com 不能设置 document.domain 为 othercompany.com. 附注: 使用document.domain来安全是让子域访问其父域,需要同时将子域和父域的document.domain设置为相同的值。必须要这么做,即使是简单的将父域设置为其原来的值。没有这么做的话可能导致授权错误。 跨域网络访问同源策略控制了不同源之间的交互,例如在使用XMLHttpRequest 或 标签时则会受到同源策略的约束。交互通常分为 三类:
以下是一些可以跨域内嵌的资源示例:标签嵌入跨域脚本。语法错误信息只能在同源脚本中捕捉到。 原文:大专栏 ?同源策略 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |