【问题标题】:Is there a setting in FireFox to allow the parent document access to the DOM of an IFRAME on another domain?FireFox 中是否有允许父文档访问另一个域上 IFRAME 的 DOM 的设置?
【发布时间】:2010-07-26 09:53:26
【问题描述】:

注意 Firebug 如何访问跨域 iframe 的 DOM,甚至允许您修改它们?我想知道是否有 Firefox 插件扩展或配置设置允许我们的 Intranet 上的页面执行此操作。

更长的解释:

我在接待区有两个“售货亭”供公众使用。当我们在 kiosk 模式下运行时(全屏,无 chrome),我创建了一个由菜单和 IFRAME 组成的小型 Web 应用程序。该菜单允许用户浏览到批准的站点并执行打印等操作。它还会关注对弹出窗口的请求,而是将它们覆盖在模态 iframe 中,而不是让浏览器和 OS chrome 暴露出来 - 破坏了“信息亭”体验。

显然,这对任何内部事物都非常有效,因为它们都在同一个域中。浏览外部网站时会变得更棘手,因为 XSS 保护会启动,您无法在 IFRAME 中看到 DOM。

我还尝试在同一域上使用基于 Web 的代理服务器(例如 PHProxy),它可以正常工作,但是在某些可怕的边缘情况下它不起作用 - 一个很大的是我们网站上的 CAPTCHA形式。所以这对我来说几乎不是一个选择。


基本上,我认为唯一对我有用的解决方案是使用安全设置或插件以某种方式修改浏览器。有什么想法吗?

非常感谢大家的时间和考虑。非常感谢。

--伊恩

【问题讨论】:

    标签: javascript ajax firefox iframe firefox-addon


    【解决方案1】:

    有一种方法可以让未授权的 JavaScript 代码(从网页加载)在 Firefox 中请求更多权限。这是一个旧的、非标准的 API,它会提示用户获得许可,如果被接受,则允许 JavaScript 执行普通 JavaScript 无法执行的操作。其中之一是绕过同源策略。

    示例代码:

    try { 
        // ask user for permission
        netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
      } catch (e) {
        // user refused permission
        alert('Permission "UniversalBrowserRead" was denied.'); 
      }
      //Should now be capable of bypassing same origin policy if user accepted
    

    由于信息亭浏览器不会经常重新启动(我想),因此只需接受一次对话框即可。不确定这是最优雅的解决方案,但至少现在可能有效(API 很旧,可能会消失)。

    这里是更多详细信息的链接:http://www.mozilla.org/projects/security/components/signed-scripts.html#privs-list

    在寻找确切的权限名称时,我发现了这个关于 Firefox 中的安全策略的页面。这将是一个更好的解决方案。我从未使用过它,所以我无法提供更多信息,但这里是链接,可能是一个开始寻找的好地方:

    http://www.mozilla.org/projects/security/components/ConfigPolicy.html

    希望这会有所帮助!

    【讨论】:

    • 这只有在您拥有非常旧的 (
    【解决方案2】:

    我发现了一个名为 CrossDomain 的插件。该插件尚未针对较新版本的 Firefox 进行更新。最后,我通过编写 HTA 并使用 Internet Explorer 渲染引擎解决了整个问题——这让我的 IT 经理很高兴 :)。这是 CrossDomain 的链接,以防有一天它对某人有所帮助。谢谢大家的投稿。

    https://addons.mozilla.org/en-US/firefox/addon/13004/

    【讨论】:

      【解决方案3】:

      为什么不使用Greasemonkey,它可以让你在任何页面上运行你的脚本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-09
        • 1970-01-01
        • 2017-11-06
        • 1970-01-01
        相关资源
        最近更新 更多