同源策略

同源策略

什么是同源策略

同源策略(Same origin policy)是浏览器为了安全设置了一种机制,即在打开了多个iframe或者多个窗口的情况下,限制JavaScript代码能够访问的只有同源(同一协议、同一域名、同一端口)的iframe或者窗口。

举例

a:http://www.a.com:80(域名对应ip为http://1.1.1.1)
b:

序号域名端口情况分析是否与a同源
1http://www.b.com8080与a不同域名不同端口非同源
2http://www.b.com80与a不同域名同一端口非同源
3http://www.a.com8080与a同一域名不同端口非同源
4http://a.com80与a同一域名同一端口但不同二级域名非同源
5http://1.1.1.180使用与a域名对应ip以及同一端口非同源
6https://www.a.com80与a同一域名同一端口但不同协议非同源
7http://www.a.com80与a同一域名同一端口同一协议同源

不严格的同源策略

domain

假设现在有两个窗口,窗口a和窗口b,a打开的a.example.com,b打开的是b.example.com,此时只要将这两个窗口的document.domain都设置成example.com,那么她们就可以摆脱同源策略的限制。但是这里要注意的是,domain的属性至少要保留一个点,也就是说至少要是二级域名,并且只能减去子域名,而不能修改任何域名。比如:这里的窗口a和窗口b,不能把example.com修改成example1.com或者example.cn,这样是不可以的。

跨域资源共享(CORS)

为了应对同源策略,IE8推出了XDomainRequest,而其它浏览器通过XMLHttpRequest实现了对CORS的支持。客户端将在请求头部带上Origin属性,而服务器在相应的时候会在头部加上一个Access-Control-Allow-Origin属性,浏览器将通过这两个属性是否匹配来判断是否可以CORS。

跨文档消息

浏览器允许不同文档之间传递消息,而不管其源是否相同。假如现在这里有两个窗口,窗口a和窗口b,它们现在是不同源的。此时a可以调用postMessage方法传递消息时间,b可以调用onMessage方法来接收,虽然此时a和b还是不能互相访问,但是也可以实现安全的消息通讯了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值