Die Erweiterung weigert sich, das Skript aufgrund der Richtlinie zur Inhaltssicherheit zu laden

Lesezeit: 4 Minuten

Die Erweiterung weigert sich das Skript aufgrund der Richtlinie zur
Maharschi

Im Folgenden ist mein Code von HTML

Skripte:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="background.js"></script>

HTML:

      <button name="btnlogin" id="btnlogin">Login</button><br/><br/>

und das Folgende ist js

$(document).ready(function(){
document.getElementById("#btnlogin").click(function(){
   alert("s");
 });
});

manifest-Datei:

{
"manifest_version": 2,
"name": "One-click Kittens",
"description": "This extension demonstrates a 'browser action' with kittens.",
 "version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
}

Ich habe festgestellt, dass, wenn ich diesen Code einfach im Browser ausführe, die Warnung ordnungsgemäß angezeigt wird, aber wenn ich sie als Chrome-Erweiterung ausführe, gibt es folgende Fehler.

Nicht erfasster Referenzfehler: $ ist nicht definiert

und

Weigerte sich, das Skript zu laden ‘http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js‘, weil es gegen die folgende Richtlinie zur Inhaltssicherheit verstößt: “script-src ‘self’ chrome-extension-resource:”.

Ich verstehe nicht, was das für Fehler sind. Bitte helfen Sie mir, die Erweiterung zu verstehen.

Danke schön

  • Es hört sich so an, als ob Sie einer Anleitung zum Erstellen alter Manifest-Erweiterungen der Version 1 folgen … $ is not defined bedeutet, dass jquery nicht geladen wurde, und die zweite Nachricht sagt Ihnen, warum jquery nicht geladen wurde. Sie sollten uns Ihr Manifest für die Erweiterung zeigen. Hier sind die Dokumente für Erweiterungsmanifeste: developer.chrome.com/extensions/manifest

    – James

    16. September 14 um 11:35 Uhr


  • Packen Sie einfach jQuery in die Erweiterung.

    – Abraham

    16. September 14 um 13:09 Uhr

  • Ich habe die JQuery-Datei heruntergeladen und mit der HTML-Seite verknüpft. Das hat die Sache zum Laufen gebracht, aber was ist mit dem Update oder der Migration von jquery?

    – Maharschi

    22. Januar 18 um 5:08 Uhr

  • Ich denke, ich muss jquery jedes Mal manuell aktualisieren.

    – Maharschi

    10. April 19 um 6:09 Uhr

1643242265 198 Die Erweiterung weigert sich das Skript aufgrund der Richtlinie zur
Apsiller

In einer Chrome-Erweiterung müssen externe Skriptquellen ausdrücklich von der Erweiterung zugelassen werden Inhaltssicherheitsrichtlinie (CSP) in Ihrem Manifest:

Wenn Sie externe JavaScript- oder Objektressourcen benötigen, können Sie die Richtlinie in begrenztem Umfang lockern, indem Sie sichere Ursprünge auf die Whitelist setzen, von denen Skripts akzeptiert werden sollen …

Eine gelockerte Richtliniendefinition, die das Laden von Skriptressourcen von example.com über HTTPS ermöglicht, könnte folgendermaßen aussehen:

"content_security_policy":"script-src 'self' https://example.com; object-src 'self'"

Skripte können nur über HTTPS in eine Erweiterung geladen werden, daher müssen Sie die jQuery-CDN-Ressource über HTTPS laden:

<script src="https://ajax.googleapis.com/..."></script>

Und fügen Sie Ihrem Manifest einen modifizierten CSP hinzu, um diese HTTPS-Ressource zuzulassen:

{
    "manifest_version": 2,
    "name": "One-click Kittens",
    "description": "This extension demonstrates a 'browser action' with kittens.",
    "version": "1.0",
    "browser_action": {
        "default_icon": "icon.png",
        "default_popup": "popup.html"
    },
    "content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'"
}

Eine noch bessere Lösung für Ihren speziellen Fall wäre jedoch, jQuery lokal in Ihre Erweiterung aufzunehmen, anstatt aus dem Internet zu laden (Ihre Erweiterung funktioniert beispielsweise derzeit nicht offline). Fügen Sie einfach eine Kopie von jQuery in Ihren Erweiterungsordner ein und verweisen Sie darauf mit einem relativen Pfad in Ihrem Skript-Tag. Angenommen, Ihre jQuery-Bibliothek und Ihre HTML-Popup-Datei befinden sich im selben Unterverzeichnis, tun Sie einfach Folgendes:

<script src="jquery-x.y.z.min.js"></script>

  • Was ist, wenn Sie mehrere URLs zulassen müssen? Ich sehe in der Dokumentation kein Beispiel dafür, wie man das erreicht.

    – Der Muffinmann

    20. September 15 um 20:51 Uhr


  • @TheMuffinMan Trennen Sie sie einfach durch Leerzeichen. Beachten Sie, dass der CSP ein allgemeiner Webstandard ist, der von Chrome aops/extensions ausgeliehen wird; Vielleicht haben Sie mehr Glück bei der Suche nach CSP-Dokumentation/Grammatik im Allgemeinen.

    – Apsiller

    20. September 15 um 20:56 Uhr


  • @AdityaC Es ist schon eine Weile her, seit ich Chrome-Erweiterungen entwickelt habe, aber ich glaube nicht, dass es eine strenge HTTPS-Anforderung für Nicht-Skript-Ressourcen gibt. Fügen Sie einfach die Domäne zu Ihren Berechtigungen hinzu und rufen Sie die JSON ab. Sie müssen Ihren Code (in einer neuen Frage) und Ihren spezifischen Fehler teilen.

    – Apsiller

    17. Dezember 16 um 21:42 Uhr


  • Mehrere URLs sehen so aus: "content_security_policy":"script-src 'self' https://example.com https://anotherexample.com; object-src 'self'"

    – Simon Hutchison

    12. Mai 17 um 2:11 Uhr

  • Und stellen Sie sicher, dass Sie keinen Schrägstrich nach der Domain setzen, wie ich es dummerweise getan habe …

    – OctaviaLo

    22. September 17 um 15:52 Uhr

Die Erweiterung weigert sich das Skript aufgrund der Richtlinie zur
Stanislaw

<script nonce="<?= CSP::getNonce() ?>">
var oldCreate = document.__proto__.createElement;
document.__proto__.createElement = function (elementName) {      
    var el = oldCreate.apply(this, arguments);
    if (elementName == "script") {           
        el.setAttribute('nonce', '<?= CSP::getNonce() ?>');
    }
    return el;
}
</script>

<script nonce="<?= CSP::getNonce()?>" type="text/javascript" src="https://stackoverflow.com/include/jquery.js"></script>

  • Dies beantwortet die Frage nicht. Es gibt keine wertvollen Informationen. Und es verwendet andere Sprachen/Bibliotheken als die in der Frage gestellten.

    – lpratlong

    18. November 19 um 10:07 Uhr

.

653080cookie-checkDie Erweiterung weigert sich, das Skript aufgrund der Richtlinie zur Inhaltssicherheit zu laden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy