在客户端禁用X-Frame-Option

Kla*_*usi 15 firefox google-chrome client-side x-frame-options

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

die*_*ocr 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) {}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以找到更多信息,例如如何在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