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 を作成しようとしました。しかし、うまくいきませんでした。最後から 2 番目のエントリは、変更されたコードで ff をコンパイルすることを暗示しているようです。これが事実である場合、それは私にとっても可能な解決策ではありません。

YouTube 動画のリストを iframe に連続してロードしてループする JS を使用して、小さな HTML ページを作成しました。YouTubeがプレイリストをサポートしていることは知っていますが、それらはひどいので、ビデオをダウンロードしたくありません。また、ブラウザーがローカル ファイルの X-Frame-Option のみを無視するとよいでしょう。これを無効にすることで、私が引き裂くセキュリティホールをいくらか最小限に抑えることができます。Chromeに関しては、解決策があればいいのですが、それほど重要ではありません.

別のアプローチとして、HTTP 応答を含む受信 TCP/IP パケットを傍受し、このヘッダー行を削除することも考えられますが、これはかなりやり過ぎです。

[編集] youtube.com/embed を使用することは、多くのビデオが埋め込みを許可していないため、悪い回避策です...

4

3 に答える 3

7

これは、Firefox 拡張機能を介して HTTP オブザーバーを使用することで簡単に実現できます。そのオブザーバーは次のようになります。

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 に答える