web-dev-qa-db-fra.com

Extension Chrome "Refus de charger le script car il enfreint la directive de sécurité du contenu suivante"

J'essaie de créer une extension Chrome, mais aucun de mes logiciels JS ne fonctionne. La console affiche cette erreur:

Refusé de charger le script ' https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js ' car il enfreint la directive suivante relative à la politique de sécurité du contenu: "blob script 'src' self ': système de fichiers: chrome-extension-resource:".

Pourquoi empêche-t-il l'exécution de jQuery?

18
Mia

L'avez-vous autorisé dans votre fichier JSON manifeste? Quelque chose comme ça:

manifest.json

 {
   "name": "My Extension",
   "content_scripts": [{
     "js": ["jquery.min.js", "YourJavaScriptFile.js"],
     "matches": ["http://*/*", "https://*/*"]
   }]
 }

Il y a des champs obligatoires que j'ai laissés de côté, mais donnant juste l'idée de base.

11
epascarello

Comme expliqué sur le site Chome website , .__, il existe une politique de sécurité du contenu empêchant votre script de charger un script distant:

Une définition de stratégie assouplie permettant le chargement de ressources de script à partir d'exemple.com via HTTPS pourrait ressembler à ceci:

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

Donc, dans votre cas, le manifest.json devrait contenir:

 {
  "name": "My Extension",
  "manifest_version": 2,
  "background":{
     "scripts": [...]
  },
  "content_security_policy": "script-src 'self' https://example.com; object-src 'self'",
 }
8
Charles Gueunet

bien, vous ne pouvez pas utiliser CDN pour js, vous devrez copier le contenu de " https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js " et créez un nouveau fichier dans votre répertoire js et appelez-le jquery.min.js et collez le tout dans celui-ci, puis dans l'en-tête de votre fichier HTML, supprimez la ligne contenant cette URL et utilisez celle-ci à la place. 

<script src="js/jquery.min.js"></script>

mais assurez-vous qu'il s'agit du chemin d'écriture du fichier contenant toutes les données de l'URL mentionnée. 

à votre santé,

2
Kareem Essawy

La politique de sécurité du contenu est une autre couche de sécurité pour votre application. Il vous permet de définir toutes les origines à partir desquelles vous chargez les styles, scripts ou données. Pour chacun des styles, scripts, polices ou connexions, vous devez spécifier les domaines que vous chargez dans votre application. Si vous utilisez un CDN jQuery d'un autre domaine, vous devez spécifier ce domaine dans la stratégie de sécurité du contenu. 

Si vous ne souhaitez pas cette couche de sécurité supplémentaire et souhaitez charger des styles ou des scripts de n'importe quel domaine, ajoutez simplement la balise méta suivante dans votre index.html et assurez-vous qu'elle se trouve avant vos importations. 

<meta http-equiv="Content-Security-Policy" content="default-src *;">

ici * est le caractère générique qui vous permet d'accéder à n'importe quel domaine. Si vous souhaitez cette couche de sécurité supplémentaire, je vous suggère de vous reporter à la documentation qui explique très clairement comment spécifier tous les domaines que vous souhaitez importer dans votre application.

1
Shiva Sairam M

Mon fichier HTML avait <script> some js code within it </script>. Lors de la suppression des balises de script, l'erreur avait disparu.

0
Deke