我有一个iframe注入页面,称他为"帮手".因此,由于相同的原始策略,我需要设置iframe域同样是父窗口域.但我无法访问父窗口域.怎么解决?
更新#1
此代码目前适用于二级域:
pathArray = window.location.host.split('.');
var arrLength = pathArray.length;
var domainName = pathArray.slice(arrLength - 2, arrLength).join('.');
document.domain = domainName;
但我需要以某种方式从父窗口获取它而不是依赖于二级域
我不知道它是否会有所帮助,但我在iframe中使用它
try {
var domainName = window.parent.parent.iframeData.domainName;
}
//Access violation
catch (err) {
document.domain = window.location.hostname.replace('www.', '');
}
Run Code Online (Sandbox Code Playgroud)
所以我检查域是否已设置我们有异常ang尝试猜测域,在任何一种情况下,都没有必要设置域
编辑:更正确地使用帖子消息来设置域名,如果需要的话
简而言之,它不能。document.domain仅当 iFrame 和包含窗口实际上是同一域的一部分时,设置才有效。如果浏览器允许您设置document.domain为您实际所在的域以外的其他内容,则将违反安全性。考虑一下,任何恶意脚本可能只是说“不,真的,相信我这个”,而浏览器基本上会说,“哦,好吧,既然你问得这么好,这就是你想要的所有许可”。
document.domain只能设置为页面实际域的父域。如果 iFrame 和包含窗口至少不共享那个,那么浏览器将不允许它们进行串扰。
除非我误解了你的问题。随意张贴一些例子来澄清。
| 归档时间: |
|
| 查看次数: |
29926 次 |
| 最近记录: |