it-swarm.com.de

Fehler bei der Richtlinienerweiterung der Chrome-Erweiterung für Inhaltssicherheit

Ich versuche, Radio-Stream-Chrome-Erweiterung zu erstellen, aber es gibt ein Problem. Wenn ich mein Skript in Browser wie normales JS + HTML + CSS starte, funktioniert es, aber wenn ich versuche, es wie eine Chrome-Erweiterung auszuführen, erhalte ich diesen Fehler

Die Ausführung des Inline-Skripts wurde abgelehnt, da es die folgenden Bedingungen verletzt Richtlinie zur Inhaltssicherheitsrichtlinie: "script-src 'self' Chrome-extension-resource:". Entweder das Schlüsselwort "unsafe-inline", ein hash ('sha256 -...') oder eine Nonce ('nonce -...') ist erforderlich, um .__ zu aktivieren. Inline-Ausführung.

Danach fügte ich dies meinem Manifest hinzu:

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

Aber danach bekam ich eine Fehlermeldung (Fehler in der Manifestzeile mit dem Code oben)


Das ist mein Manifest:

{
   "background": {
      "scripts": [ "jquery.js", "jquery-ui.js", "plate.js" ]
        },

   "browser_action": {
      "default_icon": "Images/action-normal.png",
      "default_popup": "player.html",
      "default_title": ""
   },
   "description": "Chrome Player",
   "manifest_version": 2,
   "name": "Radio Chrome Player",
   "permissions": [ "http://www.radio-station.com/" ],
   "version": "1.0"

   "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

}

Dies ist die Haupt-HTML-Datei:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="jquery.js"></script>
<script src="jquery-ui.js"></script>
<script src="main.js"></script>
<script>$(function(){$("#radioplayere").plate({playlist: [{file:"http://RADIO_STATION_STREAM_URL/;"}], phpGetter: "http://hostingshoutcast.com/stream/plate/php/plate.php"});});</script>
</head>
<body>
<div id="radioplayer">If you are seeing this then an error has occurred!</div>
</body>
</html>
18
user3397388

Ihre Probleme sind wie folgt:

  1. Chrome CSP verbietet Inline-Code und kann nicht überschrieben werden. Ihr 'unsafe-eval' behebt das Problem nicht und 'unsafe-inline', der wird ignoriert von Chrome geholfen.

    Sie müssen Inline-Code loswerden:

    <script>$(function(){$("#radioplayere").plate({playlist: [{file:"http://RADIO_STATION_STREAM_URL/;"}], phpGetter: "http://hostingshoutcast.com/stream/plate/php/plate.php"});});</script>
    

    Dies muss in eine js-Datei verschoben werden.

  2. Es gibt einen Tippfehler in Ihrem Manifest.json, Sie haben ein Komma vergessen:

    "version": "1.0",
    

    Im Allgemeinen können Sie mit Hilfe eines JSON-Validators diese Fehler abfangen.

18
Xan

Für mich ist der Grund, dass ich eine ältere Version (wie v1.7) von jQuery verwende, dieCSPProbleme hat, eine neue Version (v2.1.3) auswählen.

1
Sam Su

Ich weiß, dass ich etwas spät dran bin, aber basierend auf den Kommentaren von OP zu Xans Antwort wäre eine andere Komponente der Lösung des Problems die Anpassung des AJAX - Aufrufs, der impliziert ist.

Ich habe den gleichen Fehler erhalten und meinen API-Aufruf folgendermaßen angepasst:

dataType: 'json'

anstatt:

dataType: 'jsonp'

(Das Problem wurde gelöst, allerdings müssen noch Inline-Skripts entfernt werden.)

1

Durch das Hinzufügen von CSP in der Datei manifest.json wird der Fehler behoben. Es funktionierte für meine reagierte App . Vermutlich fehlt "," das Problem für Ihren Code. Andernfalls fügen Sie die folgende Zeile hinzu und versuchen Sie es dann.

"csp": "script-src 'self' 'unsafe-inline'; object-src 'self'"

Inhaltssicherheitsrichtlinie

0
abhijit padhy