不安全的JavaScript试图为带有URL的框架启动导航
Unsafe JavaScript attempt to initiate navigation for frame with URL
这有点复杂,请耐心听我说。网站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. 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,那么上面的代码工作。尽管它们有不同的域
您可以在Chromium源代码的注释中找到对该行为的解释。在这里看到的:
https://code.google.com/p/chromium/codesearch铬/src/third_party/WebKit/源/核心/框架/Frame.cpp&平方=包:chromium& rcl = 1438193817,类型= cs& l = 202
基本上顶层窗口对导航的限制比其他窗口少。请参阅非顶部窗口的限制:
一个文档可以导航它的子框架,或者,更一般地,一个如果文档位于同一原点,则文档可以导航框架该框架的任何祖先(在框架层次结构中)
顶窗:
具体来说,如果顶层框架已打开的文档,或者如果该文档与任何一个相同来源顶层框架的开启器的祖先(在框架层次结构中)。
原因是:
顶层框架比其他框架更容易导航,因为它们在地址栏中显示他们的url(在大多数浏览器中)。
基本上,对于非顶部窗口,它绝对需要同源才能允许导航,但对于顶部窗口,被那个窗口打开的框架可以导航即使它不是同源的。这似乎是你面临的问题,当B在顶部时,相同的原点不适用,但当它不在顶部时,它就适用。
根据这一点,我不确定是否有一个直接的或任何解决方案。
我知道这件事,但我来这里是因为我有同样的问题。我在iframe
中使用sandbox
属性解决了我的问题:
var iframe = document.createElement('iframe');
iframe.setAttribute("sandbox", "allow-scripts allow-top-navigation");
var html = '<body><script>window.top.location="https://redirectDomain.tld";</script></body>';
iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);
document.body.appendChild(iframe);
你可以阅读更多来源:
用给定的HTML动态创建iframe
框架和Windows
- 使用skel框架构建的响应式网站只有在使用漂亮的URL时才能应用css
- Chrome扩展:不安全的JavaScript尝试访问具有URL的框架域、协议和端口必须匹配
- 自定义CKEditor以在框架中使用清晰的URL
- 如何在java框架(JSF)中基于URL的json响应生成动态表单
- 使用 Javascript 更改框架的 URL
- 不安全的 JavaScript 尝试启动带有 URL 的框架的导航更改 - 如何尝试捕获它
- 不安全的 JavaScript 尝试使用 URL(同一域!)访问框架
- 在 PHP 中获取顶部框架(浏览器中的地址栏)URL
- 如何在使用弹簧框架工作时提供JSP页面的URL以打开WEB-INF文件夹中的弹出窗口
- 如何在单独的框架中的文本框中打开url
- 在url中使用javascript更改框架属性
- 获取顶部窗口url从框架/iframe在不同的域
- Angular JS promise/defer:使用框架Quickblox,如何上传图像,然后将公共url上传到自定义
- 获取有一个框架被破坏的页面的url
- 我如何从外部javascript文件在播放框架生成ajax url
- 我如何在浏览器的框架中执行javascript,比如粘贴"javascript:"进入url栏
- 框架关闭和重定向新的url打开相同的窗口
- 如何在“不安全的JavaScript试图访问带有url的框架”之前测试浏览器的权限(Chrome本地框架)
- Facebook身份验证-不安全的JavaScript试图访问框架与URL
- 通过单击IFrame(内联框架)中的一个项目,我需要路由到特定的URL