- 在工作中遇到了,将一个子页面嵌入到父页面中,然后父组件会从自组件中取值,或者子组件从父组件中取值,比如用window.top.document.getElementById("userShowName").innerHTML方法,但是两者的域名可能不一样,Javascript出于对安全性的考虑,而禁止两个或者多个不同域的页面进行互相操作,会出现跨域问题
- 一般会报这个错误 Error: Permission denied to access property xxxx
- 浏览器判断是否跨域,是通过判断document.domain是否一致
- 为了解决这个跨域问题,如果需要在前端解决,可以将跨页面的域名改成一致的,
- 重点:
最好所有页面统一约定好域名,最外层和里层的都约定好域名,然后统一使用一个域名,就能解决跨域问题,使用document.domain能获取并且设置当前的域名,因为可能父页面里有很多子页面,如果全是以最外层的父页面的域名为准,如果父页面的域名包括二级三级,比如https://baijiahao.baidu.com,打印document.domain,结果为baijiahao.baidu.com,包含了二级域名,如果子页面都和父页面一样设置为二级域名,应该也会解决跨域问题,那假如父页面的二级域名改了,所有的子页面都需要改,所以我们如果统一域名,都是写到一级域名,比如baidu.com,因为一级域名基本不会改,所以哪怕父页面的二级域名改了 子页面也不会受到影响
6.还有就是如果需要使用document.domain去改域名,需要在页面最开始的时候就更改,不能等js运行了,在js里面更改,那就晚了,如果在vue里面用,需要在creat或者mount里面写,如果是在html里写,那就在最上面,在js代码运行之前写