JavaScript 九种跨域方式实现原理(5)

该方式只能用于二级域名相同的情况下,比如 a.test.com 和 b.test.com 适用于该方式。
只需要给页面添加 document.domain ='test.com' 表示二级域名都相同就可以实现跨域。

实现原理:两个页面都通过 js 强制设置 document.domain 为基础主域,就实现了同域。

我们看个例子:页面a.zf1.cn:3000/a.html获取页面b.zf1.cn:3000/b.html中 a 的值

// a.html <body> helloa <iframe src="https://b.zf1.cn:3000/b.html" frameborder="0"></iframe> <script> document.domain = 'zf1.cn' function load() { console.log(frame.contentWindow.a); } </script> </body>

// b.html <body> hellob <script> document.domain = 'zf1.cn' var a = 100; </script> </body>

三、总结

CORS 支持所有类型的 HTTP 请求,是跨域 HTTP 请求的根本解决方案

JSONP 只支持 GET 请求,JSONP 的优势在于支持老式浏览器,以及可以向不支持 CORS 的网站请求数据。

不管是 Node 中间件代理还是 nginx 反向代理,主要是通过同源策略对服务器不加限制。

日常工作中,用得比较多的跨域方案是 cors 和 nginx 反向代理

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c114bb771ebbd147ea3f657d606d7ab3.html