阻止具有原点的帧访问使用同一域的跨原点帧



嗨,我对这条消息有问题。

我主页的网址是:

page1.mydomain.com/page1.html

该页面有一个Iframe到:

frame.mydomain.com/iframe.html

在主页上,我从另一个页面打开一个窗口:

mywindow = window.open("http://page1.mydomain.com/page3.html", 'page3', 'status=1,height=768,width=1280,scrollbars=1');

所有3个页面都设置了javascript:

document.domain = "mydomain.com";

我可以毫无问题地从主页面到iframe进行交互。我只在访问窗口时遇到问题。打开属性。

类似:

mywindow.document.getElementById("something")

我收到了错误信息。

blocked a frame with origin from accessing a cross-origin frame

如果我从第3页尝试:

window.opener.document.getElementById("somethingPage1")

我得到了同样的错误:

blocked a frame with origin from accessing a cross-origin frame

为什么我可以与iframe交互,而不能与window.open和window.opener交互?

在我的案例中,域名不同,我通过用父域名替换客户端的域名来解决这个问题。如果域名在子窗口(弹出窗口)中不重要,您可以尝试。您试图访问的window.oopener.document.getElementById()无法工作。当你发帖时,它会引发安全错误。如果可能的话,最好的方法是将两个URL都放在同一个域名下。或者只是为了开发你可以安装扩展"允许控制允许来源:"在Chrome中它将工作。

最新更新