16

我想在 Firefox(和 Chrome)的客户端禁用 X-Frame-Option 标头。我的发现: 克服“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 是一个糟糕的解决方法,因为很多视频不允许嵌入......

4

3 回答 3

7

这可以通过 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

于 2014-05-16T20:46:47.327 回答
3

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

于 2015-07-13T19:21:33.183 回答
3

René Houkema另一个答案中提到的 Firefox 扩展不再有效,所以我创建了一个新扩展。

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

此扩展也与 Quantum 兼容。

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

于 2018-07-17T07:59:55.880 回答