代码之家  ›  专栏  ›  技术社区  ›  AndreiM

iframe导致的javascript权限错误

  •  0
  • AndreiM  · 技术社区  · 15 年前

    我有一个.jsp,它包含一个iframe,其中一个页面包含一些嵌入的javascript。这个javascript访问父页面(包含iframe的页面)中的一些dom元素。

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

    document.domain='domain.com';//其中domain.com是我的域

    然后继续访问父文档中的DOM元素。

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

    127.0.0.1域名.com

    目的是欺骗父页面上的javascript,使其相信嵌入页面中的文档是从同一域提供服务的。

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

    我错过什么了吗?提前感谢您的任何建议或意见!

    2 回复  |  直到 15 年前
        1
  •  1
  •   David    15 年前

    即使“document.domain”属性看起来相同, the MSDN documentation 听起来你还是要明确地将它们设置为相同的:

    不同主机上的所有页面必须 显式具有域属性 设置为相同的值以进行通信 彼此成功。为了 例如,域的值 主机上页的属性 Microsoft.com是由 违约。如果 设置页面的域属性 在另一个名为的主机上 msdn.microsoft.com到“microsoft.com”, 两页纸可以交流 彼此之间。但是,这不是 案件, 除非你明确设定 网页的域属性 从microsoft.com转到“microsoft.com”。

        2
  •  0
  •   ATorras    15 年前

    您可以放置一个代理来重定向 <iframe src="http://domain.com/fake/"> 去正确的地方。

    这只是个主意…

    当做。