【问题标题】:Disable X-Frame-Option on client side在客户端禁用 X-Frame-Option
【发布时间】:2012-10-04 14:38:52
【问题描述】:

我想在 Firefox(和 Chrome)的客户端禁用 X-Frame-Option 标头。 我发现了什么: Overcoming "Display forbidden by X-Frame-Options" 非客户端解决方案不适合我的目的

https://bugzilla.mozilla.org/show_bug.cgi?id=707893 这似乎非常接近。我尝试使用代码 user_pref("b2g.ignoreXFrameOptions", true); 在配置文件目录中创建 user.js; 但它没有用。倒数第二个条目似乎暗示用修改后的代码编译 ff?如果是这种情况,这对我来说也不是一个可能的解决方案。

我刚刚用一些 JS 编写了一个小 HTML 页面,它通过将 YouTube 视频列表依次加载到 iframe 中来循环播放它们。我知道 youtube 支持播放列表,但它们很烂,我不想下载视频。 此外,如果浏览器只忽略本地文件的 X-Frame-Option,那就太好了。这会在某种程度上最小化我通过禁用它打开的安全漏洞。至于 Chrome,有一个解决方案会很好,但没那么重要。

我猜另一种方法是拦截传入的包含 HTTP 响应的 TCP/IP 数据包并删除此标头行,但这有点过头了。

[编辑] 使用 youtube.com/embed 是一个不好的解决方法,因为很多视频都不允许嵌入...

【问题讨论】:

    标签: firefox google-chrome client-side x-frame-options


    【解决方案1】:

    这可以通过 Firefox 扩展使用 HTTP Observer 轻松实现。该观察者将如下所示:

    let myListener =
    {
        observe : function (aSubject, aTopic, aData)
        {
            if (aTopic == "http-on-examine-response")
            {
                let channel = aSubject.QueryInterface(Ci.nsIHttpChannel);
    
                try
                { // getResponseHeader will throw if the header isn't set
    
                    let hasXFO = channel.getResponseHeader('X-Frame-Options');
    
                    if (hasXFO)
                    {
                        // Header found, disable it
                        channel.setResponseHeader('X-Frame-Options', '', false);
                    }
                }
                catch (e) {}
            }
        }
    }
    

    您可以找到更多信息,例如如何在 MDN[1][2] 上安装观察者

    [1]:https://developer.mozilla.org/en/docs/Observer_Notifications#HTTP_requests

    [2]:https://developer.mozilla.org/en-US/docs/Setting_HTTP_request_headers#Registering

    【讨论】:

    • 其他浏览器的更多信息也会有所帮助!
    【解决方案2】:

    使用 diegocr 代码,我创建了一个 Firefox 插件,以允许显示在其标题中具有 X-Frame-Options 的网页,因此它们将在通过 iframe 访问时显示。可以在这里下载/安装:https://addons.mozilla.org/en-US/firefox/addon/ignore-x-frame-options/

    【讨论】:

    • René Houkema,我试过这个但没有解决我的问题我在附加评论部分留下了信息
    • @René Houkema 我也试过了,但没有用,我打印了 Error: [$injector:modulerr] Failed to instantiate module demoApp due to...
    • @Patrick 我也想要同样的结果并发现这个github.com/psywolf85/Ignore_X-Frame-Options 我的结果好坏参半,但对于我需要的特定目的来说效果很好。
    【解决方案3】:

    René Houkemaother answer 中提到的 Firefox 扩展不再起作用,所以我创建了一个新扩展。

    https://addons.mozilla.org/fr/firefox/addon/ignore-x-frame-options-header/

    此扩展也与 Quantum 兼容。

    来源和更新: https://github.com/ThomazPom/Moz-Ext-Ignore-X-Frame-Options

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 2018-06-27
      相关资源
      最近更新 更多