用于解决一级域名和二级域名等之间的跨域问题。只需要两个页面的 document.domain 都设置为 顶级域名即可
思路:
- 假设 a 页面是 http://a.baidu.com:3000,b 页面是 http://b.baidu.com:3000
- a 页面没办法直接通过 iframe.contentWindow.a 获取 b 页面 window 中的 a 属性
- 两个页面都设置 document.domain 为 http://baidu.com 即可
<iframe src="http://b.destiny.cn:3000/b.html"frameborder="0"onload="load()"id="iframe"></iframe><script>document.domain = 'destiny.cn';function load() {console.log(iframe.contentWindow.a);}</script>
<script>document.domain = 'destiny.cn';var a = 100;</script>
记住定义 a 要使用 var,不能使用 let,因为 let 不会挂载到 window 上。
模拟二级域名方法
寻找到本机的 hosts 文件。
路径:C盘 -> Windows -> System32 -> drivers -> etc -> hosts
127.0.0.1 www.destiny.cn127.0.0.1 destiny.cn127.0.0.1 a.destiny.cn127.0.0.1 b.destiny.cn
localhost 是自动映射到 127.0.0.1 本机的。要设置其他的,可以通过像上面一样设置。
此时,访问 上面设置的所有域名,都相当于访问 localhost,然后只需要开启服务即可。
