首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止有源的帧使用同一域名访问跨域帧

问阻止有源的帧使用同一域名访问跨域帧
EN

Stack Overflow用户
提问于 2015-02-06 00:04:18
回答 1查看 12.9K关注 0票数 6

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

我主页上的url是:

代码语言:javascript
复制
page1.mydomain.com/page1.html

此页面包含一个Iframe,用于:

代码语言:javascript
复制
frame.mydomain.com/iframe.html

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

代码语言:javascript
复制
mywindow = window.open("http://page1.mydomain.com/page3.html", 'page3', 'status=1,height=768,width=1280,scrollbars=1');

这3个页面都设置了javascript:

代码语言:javascript
复制
document.domain = "mydomain.com";

我可以毫不费力地从主页到iframe进行交互。只有在访问window.open属性时才会遇到问题。

像这样:

代码语言:javascript
复制
mywindow.document.getElementById("something")

我收到了那个错误消息。

代码语言:javascript
复制
blocked a frame with origin from accessing a cross-origin frame

如果我从page3尝试:

代码语言:javascript
复制
window.opener.document.getElementById("somethingPage1")

我得到了同样的错误:

代码语言:javascript
复制
blocked a frame with origin from accessing a cross-origin frame

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

EN

回答 1

Stack Overflow用户

发布于 2018-11-01 22:48:11

在我的例子中,域名是不同的,我通过用父域名替换客户的域名来解决这个问题。如果域名在子窗口(弹出窗口)中无关紧要,您可以尝试。您试图访问的window.opener.document.getElementById()将不起作用。它会在你发布的时候引发安全错误。最好的方法是使两个网址在同一域名下,如果可能的话。或者只是为了开发,你可以在Chrome中安装扩展"Allow-Control-Allow-Origin:“它可以工作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28348587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档