用于解决一级域名和二级域名等之间的跨域问题。只需要两个页面的 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.cn
127.0.0.1 destiny.cn
127.0.0.1 a.destiny.cn
127.0.0.1 b.destiny.cn
localhost 是自动映射到 127.0.0.1 本机的。要设置其他的,可以通过像上面一样设置。
此时,访问 上面设置的所有域名,都相当于访问 localhost,然后只需要开启服务即可。