【发布时间】:2015-09-25 00:34:00
【问题描述】:
这有点复杂,请多多包涵。 网站 A 有一个包含网站 B 的 iframe,网站 B 有一个包含网站 C 的 iframe。
网站C上有一个按钮,点击后,我想刷新网站B的url。下面是调用的javascript从网站C刷新网站B,它在一个iframe中
function url_update(id){
var host = 'https://websiteb.com ';
var myHost = host.split('/');
if (id != "" && myHost != ""){
try {
if (id.substring(0,1) != '/'){
id = '/' + id;
}
var dft_url = myHost[0] + '//' + myHost[2] + id;
window.parent.location.href = dft_url;
} catch(e){alert("Cannot go to the desired url location: " + dft_url);}
}
}
但是当行“window.parent.location.href = dft_url;”被执行,我收到以下错误:
Unsafe JavaScript attempt to initiate navigation for frame with URL
'https://websiteB.com' from frame with URL
'https://websiteC.com'. The frame attempting navigation is
neither same-origin with the target, nor is it the target's parent or
opener.
我不明白为什么会发生这种情况以及如何解决它。任何帮助将不胜感激。
我做了一些研究,大多数人声称这是一个来源问题,但如果我取出网站 A,这意味着只有网站 B 的 iframe 包含网站 C,那么上面的代码就可以工作。即使他们有不同的域
【问题讨论】:
-
您可能希望将
c设为b中的一个页面,使其成为b的一部分... -
如果域不同,您将无法做到这一点,请查看 HTML5 消息传递 API。 developer.mozilla.org/en-US/docs/Web/API/Window/postMessage 使用这个 api,你可以接受来自不同域的站点的消息,并根据消息运行 JS,例如修改接收消息页面的url。
-
@brso05:我做不到,我没有自己的网站B,或者A,我只能访问网站C。这就是C在iframe中嵌入B的原因。跨度>
-
@user2879041: 有没有办法检查网站 C 的 window.parent 的值是多少,是网站 A 还是网站 B?
-
@JayChen 你的意思是像 window.parent.location.href 吗?不太清楚你所说的价值是什么意思
标签: javascript jquery html security iframe