ric*_*rdo 6 javascript security google-chrome
嗨,我有这个消息的问题.
我MAIN页面的网址是:
page1.mydomain.com/page1.html
Run Code Online (Sandbox Code Playgroud)
此页面有一个Iframe:
frame.mydomain.com/iframe.html
Run Code Online (Sandbox Code Playgroud)
从主页面我打开另一个页面的窗口:
mywindow = window.open("http://page1.mydomain.com/page3.html", 'page3', 'status=1,height=768,width=1280,scrollbars=1');
Run Code Online (Sandbox Code Playgroud)
所有3个页面都设置了javascript:
document.domain = "mydomain.com";
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地从主页面与iframe进行交互.我只有访问window.open属性的问题.
喜欢:
mywindow.document.getElementById("something")
Run Code Online (Sandbox Code Playgroud)
我收到了错误消息.
blocked a frame with origin from accessing a cross-origin frame
Run Code Online (Sandbox Code Playgroud)
如果我从page3尝试:
window.opener.document.getElementById("somethingPage1")
Run Code Online (Sandbox Code Playgroud)
我得到了同样的错误:
blocked a frame with origin from accessing a cross-origin frame
Run Code Online (Sandbox Code Playgroud)
为什么我可以与iframe交互并且无法与window.open和window.opener进行交互?
小智 -1
就我而言,域名不同,我通过将客户的域名替换为父级的域名来解决这个问题。如果子(弹出)窗口中的域名不重要,您可以尝试这样做。您尝试访问 window.opener.document.getElementById() 的内容将不起作用。当您发布时,它会引发安全错误。最好的方法是如果可能的话,将两个 URL 置于同一域名下。或者只是为了开发,您可以在 Chrome 中安装扩展“Allow-Control-Allow-Origin:”,它将起作用。
| 归档时间: |
|
| 查看次数: |
10622 次 |
| 最近记录: |