Erreur de la directive sur la politique de sécurité du contenu de l'extension Chrome

J'essaie de faire de l'extension chrome du flux radio mais il y a un problème. Quand je cours mon script dans le navigateur comme JS + HTML + CSS normal fonctionne, mais quand j'essaie de l'exécuter comme une extension Chrome, j'ai cette erreur:

Refus d'exécuter le script en ligne car il enfreint la directive suivante sur la politique de sécurité de contenu: "script-src 'self' chrome-extension-resource:". Soit le mot-clé «inseut-in-line», un hash («sha256 -…»), soit un nonce («nonce -…») est nécessaire pour permettre l'exécution en ligne.

Ensuite, j'ai ajouté ceci à mon manifeste:

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

Mais après cela, je recevais un message d'erreur (erreur dans la ligne de manifeste avec le code ci-dessus)


C'est mon manifeste:

 { "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'" } 

Il s'agit du fichier html principal:

 <!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> 

Vos problèmes sont les suivants:

  1. Chrome CSP interdit le code en ligne , ce qui n'est pas sujet à la suppression. Votre 'unsafe-eval' ne résout pas le problème, et 'unsafe-inline' qui aurait aidé sera ignoré par Chrome.

    Vous devez vous débarrasser du code en ligne:

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

    Cela doit être déplacé dans un fichier js.

  2. Il y a une faute de frappe dans votre manif.json, vous avez oublié une virgule:

     "version": "1.0", 

    En général, l'utilisation d'un validateur JSON peut vous aider à attraper ces erreurs.

Je sais que je suis un peu en retard, mais en fonction des commentaires de OP à la réponse de Xan, un autre composant de résoudre le problème serait d'ajuster l'appel AJAX impliqué.

J'avais la même erreur et réglé mon appel API pour être:

 dataType: 'json' 

au lieu de:

 dataType: 'jsonp' 

(Résolu le problème, accordé, il faudra encore supprimer tous les scripts en ligne).

Pour moi, la raison en est que j'utilise une ancienne version (comme v1.7) de jQuery qui a des problèmes CSP , choisissez une nouvelle version (v2.1.3).