同源与跨域(二)

降域

在当前页面下的iframe的域名若与当前页面的域名不同源,则当前页面的js代码对iframe无法进行任何操作。
原因:这是为了保护用户在iframe中登录其他网站或与之类似的相关操作会泄露隐私数据

http://a.example.dirhttp://b.example.dir,后面的example.dir相同,那么就可以使用document.domain将二者的域名设置为example.dir来实现同源。
  • 顶级域名无法降域
  • 不仅当前页面要使用document.domain,iframe的源页面也要使用document.domain

降域主要针对于当前页面下的iframe

修改host文件使得不同域名映射至同一个IP地址,即可测试JSONP跨域

现在假设在http://a.example.dir/a.html页面里有一个iframe,src是http://b.example.dir/b.html,这个页面与它里面iframe框架是不同域的,所以我们无法通过页面中JS代码来读取iframe。


    

但是我们可以使用document.domain,我们只要把http://a.example.com/a.htmlhttp://b.example.com/b.html这两个页面的document.domain都设成相同的域名就可以了。

http://a.example.com/a.html中设置document.domain



document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。例如:a.b.example.com 中某个文档的document.domain 可以设成a.b.example.comb.example.comexample.com中的任意一个,但是不可以设成 c.a.b.example.com,因为这是当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。
作者:范小饭_
链接:https://www.jianshu.com/p/c71c20e98f94


postMessage

window.postMessage
html5跨域通信之postMessage的用法
实现两个窗口通信方法-postMessage


你可能感兴趣的:(同源与跨域(二))