动态设置document.domain为iframe

Suh*_*han 6 javascript iframe

我有一个iframe注入页面,称他为"帮手".因此,由于相同的原始策略,我需要设置iframe域同样是父窗口域.但我无法访问父窗口域.怎么解决?

更新#1

此代码目前适用于二级域:

pathArray = window.location.host.split('.'); var arrLength = pathArray.length; var domainName = pathArray.slice(arrLength - 2, arrLength).join('.'); document.domain = domainName;

但我需要以某种方式从父窗口获取它而不是依赖于二级域

Suh*_*han 6

我不知道它是否会有所帮助,但我在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尝试猜测域,在任何一种情况下,都没有必要设置域

编辑:更正确地使用帖子消息来设置域名,如果需要的话


Pat*_*k M 5

简而言之,它不能。document.domain仅当 iFrame 和包含窗口实际上是同一域的一部分时,设置才有效。如果浏览器允许您设置document.domain为您实际所在的域以外的其他内容,则将违反安全性。考虑一下,任何恶意脚本可能只是说“不,真的,相信我这个”,而浏览器基本上会说,“哦,好吧,既然你问得这么好,这就是你想要的所有许可”。

document.domain只能设置为页面实际域的父域。如果 iFrame 和包含窗口至少不共享那个,那么浏览器将不允许它们进行串扰。

除非我误解了你的问题。随意张贴一些例子来澄清。