Laden Sie die entfernte Webseite in die Hintergrundseite: Chrome Extension

8

Ist es möglich, eine Remote-Webseite mithilfe einer Chrome-Erweiterung in eine Hintergrundseite zu laden?

%Vor%

funktioniert, aber

%Vor%

schlägt mit dem folgenden Fehler fehl:

%Vor%     
Anirudh Ramanathan 07.08.2012, 11:37
quelle

1 Antwort

12

Nein, das ist nicht möglich. möglich seit Chrome 22 - siehe unten in der Antwort.

Sie können eine https: -Ressource in der Manifestdatei auf die weiße Liste setzen Datei, damit Ihr Hintergrundskript manuell erstellt werden kann. Stellen Sie sicher, dass Sie eine Fallback-Ressource in Ihre Erweiterung einschließen, falls das Netzwerk nicht verfügbar ist:

%Vor%

Aufgrund der Content-Sicherheitsrichtlinie (CSP) können Sie kein Inline-JavaScript ausführen, also Sie < em> muss externe JS-Dateien verwenden. bg.js könnte folgendermaßen aussehen:

%Vor%

Wenn Sie eine Seite dynamisch erstellen möchten, vermeiden Sie die Verwendung von eval -like-Methoden, da diese auch vom CSP verboten sind. Sie können eine Vorlage schreiben und externe Werte anfordern, um Ihre Vorlage zu füllen. localStorage kann zum Zwischenspeichern von Variablen verwendet werden. Ein Beispiel zum Zwischenspeichern externer Ressourcen finden Sie in der Chrome-Erweiterung, die der HTML-Seite der aktuellen Seite externes JavaScript hinzufügt . Diese Antwort bezieht sich auf Inhaltsskripte . Die genaue Methode kann daher nicht zum Aktivieren von Caching-Skripts verwendet werden (weil Sie eval zum Laden des Skripts verwenden müssten). Die Caching-Technik kann jedoch weiterhin verwendet werden.

Ich habe auch versucht, die folgende Methode zu verwenden, die nicht funktioniert (in dieser Antwort enthalten, so dass Sie es nicht selbst ausprobieren müssen):
Erstellen Sie aus der AJAX-Antwort eine Blob und verwenden Sie dann webkitURL.createObjectURL , um eine temporäre URL zum Laden der Ressource zu erstellen.

%Vor%

Der vorherige Code führt zu folgendem Fehler:

  

Weigerte sich, das Skript 'blob: chrome-extension% 3A // damgmpfpicjkeogacmlgiceidmilllf / 96356d24-3680-4188-812e-5661d23e81df' zu laden, da es gegen die folgende Richtlinie zur Inhaltssicherheitsrichtlinie verstößt: "script-src 'self' chrome-extension -resource: ".

Laden externer Ressourcen auf der Hintergrundseite

Seit Chrome 22 ist es technisch möglich (mit der Richtlinie unsafe-eval CSP), Nicht-https-Ressourcen auf der Hintergrundseite zu laden. Dies ist offensichtlich nicht empfohlen wegen Sicherheitsbedenken (weil es anfällig für MITM-Angriff

Hier ist ein Beispiel, um eine beliebige Ressource zu laden und sie im Kontext des Hintergrundskripts auszuführen.

%Vor%

Also sollte das Manifest mindestens enthalten:

%Vor%     
Rob W 07.08.2012, 12:35
quelle