it-swarm.com.de

X-Frame-Optionen umgehen DENY in einer Chrome Erweiterung?

Ich bin der Autor von Intab , einer Chrome) Erweiterung, mit der Sie einen Link inline anstatt auf einem neuen Tab anzeigen können Szenen, es ist nur ein Iframe, der die URL lädt, auf die der Benutzer geklickt hat.

Es funktioniert hervorragend, außer für Sites, die den X-Frame-Options-Header auf DENY oder SAMEORIGIN setzen. Einige wirklich große Websites wie Google und Facebook verwenden es beide, was zu einem etwas ruckeligen Erlebnis führt.

Gibt es eine Möglichkeit, das zu umgehen? Da ich die Erweiterung Chrome) verwende, kann ich auf Inhalte auf Browserebene zugreifen, die möglicherweise hilfreich sind. Suchen Sie nach Ideen oder Hilfe!

43

Chrome bietet die API webRequest zum Abfangen und Ändern von HTTP-Anforderungen. Sie können den Header X-Frame-Options Entfernen, um das Einfügen von Seiten innerhalb eines Iframes zuzulassen.

chrome.webRequest.onHeadersReceived.addListener(
    function(info) {
        var headers = info.responseHeaders;
        for (var i=headers.length-1; i>=0; --i) {
            var header = headers[i].name.toLowerCase();
            if (header == 'x-frame-options' || header == 'frame-options') {
                headers.splice(i, 1); // Remove header
            }
        }
        return {responseHeaders: headers};
    },
    {
        urls: [ '*://*/*' ], // Pattern to match all http(s) pages
        types: [ 'sub_frame' ]
    },
    ['blocking', 'responseHeaders']
);

Im Manifest müssen Sie die Berechtigungen webRequest und webRequestBlocking sowie die URL-Muster angeben, die Sie abfangen möchten.

60
Rob W