在客户端禁用X-Frame-Option

时间:2012-10-14 11:29:53

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

我想在Firefox(和Chrome)上取消客户端的X-Frame-Option Header。 我发现了什么: 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页面,它通过连续将它们加载到iframe中来循环播放YouTube视频列表。我知道youtube支持播放列表,但他们很糟糕,我不想下载视频。 此外,如果浏览器仅忽略本地文件的X-Frame-Option,那将是很好的。通过禁用此功能,这可以最大限度地减少我撕开的安全漏洞。至于Chrome,解决方案会很好,但并不重要。

我想另一种方法是截取包含HTTP Respone的传入TCP / IP数据包并删除此标题行,但这实在是太过分了。

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

René Houkemaother answer above中提到的F​​irefox扩展不再可用,因此我创建了一个新扩展。

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

此扩展程序也与Quantum兼容。

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