【问题标题】:javascript, iframe, security - Permission denied when tring to access a js function from parent windowjavascript, iframe, security - 尝试从父窗口访问 js 函数时权限被拒绝
【发布时间】:2011-08-30 23:20:29
【问题描述】:

祝大家有美好的一天。

我有一个包含 iframe 的页面。在那个 iframe 中,我有一个名为 test() 的脚本。我需要从父窗口访问该功能。在四处询问后,我得到了这个解决方案:

<div onclick="document.getElementById('targetFrame').contentWindow.teste();">Test</div>

点击后应该运行测试功能。问题是我收到“Permission denied to access property test”错误。

对我来说这似乎是一个权限错误,所以我将 iframe 权限中加载的文件更改为 777,但没有任何结果。

注意:iframe 中加载的文件不在同一个域中。

【问题讨论】:

标签: javascript iframe permissions


【解决方案1】:

默认禁止访问其他域的页面,因为浏览器使用same origin policy。有几种解决方法,例如使用 location.hash 或 window.name 在框架之间进行通信。 HTML5 中最新的和标准化的是 postMessage-interface。 有跨浏览器解决方案库http://easyxdm.net/wp/

【讨论】:

  • 好的...我该如何更改?我在两个域上都有 root 访问权限。
  • 这是用于 Intranet,您可以控制所有浏览器吗?
  • 如果是这种情况,您可以在某些浏览器中禁用网络安全。搜索禁用 SOP:stackoverflow.com/questions/330427/…,但通常只有丑陋的黑客存在,在浏览器上实施的安全策略是有原因的
  • 如果我为 iframe 文件使用子域怎么办?
【解决方案2】:

我不确定是否可能,跨窗口(框架)通信必须在相同的域、协议和主机名中。有关详细信息,请参阅 Same origin policy for JavaScriptCross domain communication with iframes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2015-07-20
    相关资源
    最近更新 更多