javascript, iframe, security - 尝试从父窗口访问 js 函数时权限被拒绝
Posted
技术标签:
【中文标题】javascript, iframe, security - 尝试从父窗口访问 js 函数时权限被拒绝【英文标题】:javascript, iframe, security - Permission denied when tring to access a js function from parent window 【发布时间】: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 中加载的文件不在同一个域中。
【问题讨论】:
这个已经被问过很多次了:***.com/questions/364952/… 【参考方案1】:默认禁止访问其他域的页面,因为浏览器使用same origin policy。有几种解决方法,例如使用 location.hash 或 window.name 在框架之间进行通信。 html5 中最新的和标准化的是 postMessage-interface。 有跨浏览器解决方案库http://easyxdm.net/wp/。
【讨论】:
好的...我该如何更改?我在两个域上都有 root 访问权限。 这是用于 Intranet,您可以控制所有浏览器吗? 如果是这种情况,您可以在某些浏览器中禁用网络安全。搜索禁用 SOP:***.com/questions/330427/…,但通常只有丑陋的黑客存在,在浏览器上实施的安全策略是有原因的 如果我为 iframe 文件使用子域怎么办?【参考方案2】:我不确定是否可能,跨窗口(框架)通信必须在相同的域、协议和主机名中。有关详细信息,请参阅 Same origin policy for javascript 和 Cross domain communication with iframes
【讨论】:
以上是关于javascript, iframe, security - 尝试从父窗口访问 js 函数时权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
没有 src 的 iframe 的 Content-Security-Policy (CSP) 框架祖先
content-security-policy 不起作用我只想将我的网站加载到另一个网站上的 iFrame 中
如何使用 javascript 从 iframe 内部获取 iframe 的高度?具有多个 iframe 的页面呢?