Remote-Iframe mit Chrome-Erweiterung injizieren

8

Für mein Leben kann ich nicht erreichen, dass meine Chrome-Erweiterung einen iFrame mit einer Remote-URL anzeigt.

Ich sehe die folgende Nachricht in der Konsole -

  

wurde abgelehnt, um Ссылка zu rahmen, da es gegen die folgende Richtlinie zur Inhaltssicherheitsrichtlinie verstößt: "child-src 'self'". Beachten Sie, dass 'frame-src' nicht explizit festgelegt wurde, daher wird 'child-src' als Fallback verwendet.

Ich habe hier eine Lösung gefunden ( Iframe in eine Seite mit restriktiver Inhaltssicherheitsrichtlinie einfügen ), die das Einbringen eines lokalen iframes erfordert, das dann einen anderen iframe enthält, der auf die entfernte URL verweist. Dies soll die Sicherheitsrichtlinie umgehen. Aber aus irgendeinem Grund scheint es in meinem Fall nicht zu funktionieren. Fehle ich etwas oder wurde die Chrome-Sicherheitsrichtlinie geändert?

Nachfolgend sind Teile meiner Erweiterung aufgeführt, die zu diesem Problem gehören. Beachte - dieser Code ist nicht der hübscheste, da ich hantiert habe, um das zum Laufen zu bringen.

So wie dies jetzt funktioniert, sendet background.js eine Nachricht an inject.js. inject.js fügt den ersten iframe ein, der auf die lokale Datei infobar.html verweist. Diese Seite ist unsere Hauptbenutzeroberfläche. Wir möchten, dass die Remote-HTML-Seite in einem iframe als Teil dieser Seite angezeigt wird. Dann fügt infobar.js einen iframe ein, der auf die lokale Datei frame.html verweist. Schließlich hat frame.html einen iframe, der für unsere Remote-URL fest codiert ist.

Basierend auf der vorherigen Antwort sollte nur der erste iframe der Inhaltssicherheitsrichtlinie unterliegen. Dies scheint jedoch hier nicht der Fall zu sein, da das referenzierende Beispiel.com tatsächlich 3 iframes tief ist.

manifest.json

%Vor%

inject.js

%Vor%

infobar.html

Einfache HTML-Seite. Nichts da drin. Referenzen infobar.js.

infobar.js

%Vor%

frame.html

%Vor%     
Phil Figgins 20.11.2017, 15:22
quelle

1 Antwort

0

Der richtige Weg ist, die chrome.webRequest API in Ihrem Hintergrundskript zu verwenden und HTTP-Antworten abzufangen.

Sie können dann die Antwortheader überschreiben, um den Content-Security-Policy-Header zu ändern. Sie können auch X-Frame-Options header ändern (falls erforderlich).

Dokumentation: chrome.webRequest

    
Usama Ejaz 27.02.2018 17:19
quelle