来自IFrame的JavaScript权限错误

来自IFrame的JavaScript权限错误,javascript,jakarta-ee,Javascript,Jakarta Ee,我有一个.jsp,它包含一个IFrame,其中一个页面包含一些嵌入式JavaScript。此JavaScript访问父页面(包含IFrame的页面)中的一些DOM元素 嵌入的页面将位于与父页面分离的子域上,我意识到其中存在一些安全隐患。我的印象是,IFrame中嵌入的任何页面的document.domain必须与父页面的document.domain匹配,才能允许跨IFrame访问。嵌入式页面当前包含以下代码以扩展其安全范围: document.domain = 'domain.com'; //

我有一个
.jsp
,它包含一个IFrame,其中一个页面包含一些嵌入式JavaScript。此JavaScript访问父页面(包含IFrame的页面)中的一些DOM元素

嵌入的页面将位于与父页面分离的子域上,我意识到其中存在一些安全隐患。我的印象是,IFrame中嵌入的任何页面的
document.domain
必须与父页面的document.domain匹配,才能允许跨IFrame访问。嵌入式页面当前包含以下代码以扩展其安全范围:

document.domain = 'domain.com'; //where domain.com is my domain
然后继续访问父文档中的DOM元素

我目前正在对此进行测试,并使用以下条目修改了为父页面提供服务的Windows计算机上的主机文件:

127.0.0.1 domain.com
目标是欺骗父页面上的JavaScript,使其相信嵌入页面中的文档来自同一域

如果我浏览到同一台机器上的页面。尽管通过Firebug观察到
document.domain
在我的父页面和嵌入页面中都显示为
domain.com
,但在尝试从嵌入页面中运行的JavaScript获取或设置DOM属性时,我遇到了“权限被拒绝”错误

我遗漏了什么吗?

即使“document.domain”属性看起来相同,从is听起来您仍然需要明确地将它们设置为相同:

不同主机上的所有页面必须 明确拥有域属性 设置为相同的值以进行通信 彼此成功地相处。对于 例如,域的值 主机上页的属性 microsoft.com是由 违约如果 您可以设置页面的域属性 在另一个名为 msdn.microsoft.com改为“microsoft.com,” 这两页可以交流 彼此之间。然而,这并非如此 除非您显式设置 上的页的域属性 microsoft.com至“microsoft.com”。


您可以放置一个代理,将
的请求重定向到正确的位置

这只是一个想法


问候。

我相信你是对的。我尝试将JavaScript代码中的document.domain属性显式设置为主机文件中的相同值。一旦我这样做了,错误就被解决了。然而,这很奇怪。在显式设置document.domain属性之前和之后,我观察了该属性的值,该值保持不变。然而,不知何故,这一切都起了作用。也许还有一些我不知道的事情,可以通过在代码中设置这个属性来解决。你发布的链接也非常有用!非常感谢你!