浏览器的同源策略

   <强>浏览器的同源策略      

古代的楚河汉界明确规定了楚汉两军的活动界限,理应遵守,否则必天下大乱,而事实上天下曾大乱后又统一。这里我们不用管这些“;分久必合,合久必分”,的问题,关键是看到这里规定的“;界限”;.Web世界之所以能如此美好地呈现在我们面前,多亏了浏览器的功劳,不过浏览器不是一个花瓶本;本;只负责呈现,它还制定了一些安全策略,这些安全策略有效地保障了用户计算机的本地安全与Web安全。

  

,注:

  

计算机的本地与网络是不同的层面,Web世界(通常称为互联网域)运行在浏览器上,而被限制了直接进行本地数据(通常称为本地域)的读写。

  

同源策略是众多安全策略的一个,是Web层面上的策略,非常重要,如果少了同源策略,就等于楚汉两军没了楚河汉界,这样天下就大乱了。

  

同源策略规定:不同域的客户端脚本在没明确授权的情况下,不能读写对方的资源。

  

下面分析同源策略下的这个规定,其中有几个关键词:不同域,客户端脚本,授权,读,写资源。

  
1。不同域或同域h5> 同域要求两个站点同协议,同域名,同端口,比如:表,1-1 展示了表中所列站点与http://www.foo.com是否同域的情况。

  

表1-1 是否同域情况

                 

对齐站,,,点

        

对齐是否同域

        

对齐原,,,因

              https://www.foo.com

        

不同域

        

协议不同,https与http是不同的协议

              http://xeyeteam.foo.com

        

不同域

        

域名不同,xeyeteam子域与www子域不同

              http://foo.com

        

不同域

        

域名不同,顶级域与www子域不是一个概念

              

http://www.foo.com: 8080

        

不同域

        

端口不同,8080年与默认80的端口不同

              http://www.foo.com/a/

        

同域

        

满足同协议,同域名,同端口,只是这里多了一个目录而已

                 

从表1 - 1中的对比情况可以看的出,我们通常所说的两个站点同域就是指它们同源。

  
2。客户端脚本
  

客户端脚本主要指JavaScript(各个浏览器原生态支持的脚本语言),ActionScript (Flash的脚本语言),以及JavaScript与ActionScript都遵循的ECMAScript脚本标准.Flash提供通信接口,使得这两个脚本语言可以很方便地互相通信。客户端的* * *几乎都是基于这两个脚本语言进行的,当然JavaScript是最广泛的。

  

被打入“;冷宫”,的客户端脚本有VBScript,由于该脚本语言相对较孤立,又有当红的JavaScript存在,所以实在是没有继续存在的必要。

  
3。授权h5> 一般情况下,看到这个词,我们往往会想到服务端对客户端访问的授权。客户端也存在授权现象,比如:HTML5新标准中提到关于AJAX跨域访问的情况,默认情况下是不允许跨域访问的,只有目标站点(假如是http://www.foo.com)明确返回HTTP响应头:

  

Access-Control-Allow-Origin: http://www.evil.com

  

那么www.evil.com站点上的客户端脚本就有权通过AJAX技术对www.foo.com上的数据进行读写操作。这方面的* * *细节很有趣,相关内容在后面会详细介绍。

  

,注:

  

AJAX是异步JavaScript和XML的缩写,让数据在后台进行异步传输,常见的使用场景有:对网页的局部数据进行更新时,不需要刷新整个网页,以节省带宽资源. AJAX也是* * *进行网络客户端* * *常用的技术,因为这样* * *就可以悄无声息地在浏览器后台进行,做到“;杀人无形”;。

  
4。读写权限
  

Web上的资源有很多,有的只有读权限,有的同时拥有读和写的权限。比如:HTTP请求头里的推荐人(表示请求来源)只可读,而。则具备读写权限。这样的区分也是为了安全上的考虑。

浏览器的同源策略