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

时间:2015-02-05 16:04:18

标签: javascript security google-chrome

嗨,我对此消息有疑问。

我MAIN页面的网址是:

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进行交互。 我只有访问window.open属性的问题。

像:

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进行交互?

1 个答案:

答案 0 :(得分:0)

在我的情况下,域名是不同的,我通过用父母的域名替换了客户的域名来解决了。您可以尝试在子窗口(弹出窗口)中确定域名是否重要。 您尝试访问的window.opener.document.getElementById()无法正常工作。 发布时会引发安全错误。最好的方法是将两个URL都设置为相同的域名。或者只是为了开发您可以安装扩展 在Chrome中执行“ Allow-Control-Allow-Origin:”。