2012-10-14 6 views
14

Ich möchte den X-Frame-Option-Header auf Client-Seite in Firefox (und Chrome) zu disbale. Was ich gefunden habe: Overcoming "Display forbidden by X-Frame-Options" Eine nicht-Client-Lösung ist für meine Zwecke nicht geeignetDisable X-Frame-Option auf Client-Seite

https://bugzilla.mozilla.org/show_bug.cgi?id=707893 Dies scheint ziemlich nahe zu sein. Ich habe versucht, die user.js im Profil dir mit dem Code user_pref zu erstellen ("b2g.ignoreXFrameOptions", true); aber es hat nicht funktioniert. Der vorletzte Eintrag scheint das Kompilieren von ff mit modifiziertem Code zu beinhalten. Wenn dies der Fall ist, ist es auch keine mögliche Lösung für mich.

Ich habe gerade eine kleine HTML-Seite mit JS geschrieben, die eine Liste von Youtube-Videos durchläuft, indem ich sie nacheinander in einen Iframe lade. Ich weiß, youtube unterstützt Playlists, aber sie sind scheiße und ich möchte die Videos nicht herunterladen. Es wäre auch schön, wenn der Browser nur die X-Frame-Option für lokale Dateien ignoriert. Dies würde die Sicherheitslücke, die ich aufreiße, etwas minimieren, indem ich dies deaktiviere. Für Chrome wäre eine Lösung zwar schön, aber nicht so wichtig.

Ich denke, ein anderer Ansatz wäre, eingehende TCP/IP-Pakete abzufangen, die eine HTTP-Respone enthalten und diese Kopfzeile entfernen, aber das ist ein ziemlicher Overkill.

[Bearbeiten] youtube.com/embed zu verwenden ist eine schlechte Abhilfe, da eine Menge von Videos erlauben Dont eingebettet werden ...

Antwort

6

Dies kann leicht einen HTTP-Observer über eine Firefox-Erweiterung erreicht werden. Das Beobachter wird wie folgt aussehen:

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) {} 
     } 
    } 
} 

können Sie weitere Informationen, zB wie die Beobachter auf MDN installieren [1] [2]

[1]: https://developer.mozilla.org/en/docs/Observer_Notifications#HTTP_requests

[2 ]:

+0

Weitere Informationen zu anderen Browsern wären hilfreich, als gut! –

3

Mit demogoc-Code habe ich ein Firefox-Add-on erstellt, um die Anzeige von Webseiten mit X-Frame-Optionen in ihrer Kopfzeile zu ermöglichen, so dass sie beim Zugriff über einen iframe angezeigt werden. Es kann hier heruntergeladen/installiert werden: https://addons.mozilla.org/en-US/firefox/addon/ignore-x-frame-options/

+0

René Houkema, ich habe es versucht, aber ich habe meinen Fall nicht gelöst. Ich habe Informationen im Add-on-Review-Abschnitt –

+0

@ René Houkema verlasst. Ich habe es auch versucht und nicht funktioniert, ich habe gedruckt Fehler: [$ injector: modulerr] Fehler beim Instanziieren des Moduls demoApp wegen ... – oshingc

+0

Ausgezeichnet - hat perfekt funktioniert! –