Comment corriger l'erreur d'invocation JavaScript chrome-extension inline?

je fais une extension chrome mais j'ai l'impression d'avoir l'erreur suivante quand j'essaye de démarrer un évènement onclick ().

Refused to load the script 'https://apis.google.com/js/client.js?onload=handleClientLoad' because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:"

et

Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution.

Ceci est mon manifeste.json :

{
  "manifest_version": 2,

  "name": "SECURE",
  "description": "this extension offers secure communication for GMAIL     users",
  "version": "1.0",

 "browser_action": {
 "default_icon": "resources/icon16.png",
 "default_popup": "popup.html",
 "default_title": "Click here!"


 },

 "background":{
   "scripts":["background.js"]
},

 "content_scripts": [
  {
   "matches": ["http://*/*", "https://*/*"],
   "js":["myscript.js"],
   "run_at": "document_end"
  }
  ],
"permissions": ["identity", "https://accounts.google.com/*",  "https://www.googleapis.com/*"],

"oauth2": {
   "client_id": "975410329966.apps.googleusercontent.com",
 "scopes": [
   "<all urls>",
   "https://www.googleapis.com/auth/drive",
   "https://mail.google.com/",
   "https://www.googleapis.com/auth/gmail.login",
   "https://www.googleapis.com/auth/gmail.compose",
   "https://www.googleapis.com/auth/gmail.readonly",
   "https://www.googleapis.com/auth/gmail.send"
  ],

 "content_security_policy":"script-src 'self'  'unsafe-inline' 'unsafe eval'  https://apis.google.com/js/client.js?; object-src 'self'"


}
}

toute aide pour corriger cette erreur serait grandement appréciée.

19
demandé sur Artjom B. 2016-04-14 14:49:03

1 réponses

Par défaut Politique De Sécurité Du Contenu, les scripts en ligne ne seront pas chargés et seul le script local peut être chargé. Vous pouvez assouplir la politique par défaut en:

  1. Script En Ligne. Jetez un oeil à Guide Officiel, les scripts inline peuvent être mis en liste blanche en spécifiant le hachage Base64-encoded du code source dans la Politique. Voir Hash d'utilisation pour les éléments pour un exemple.

    mais je crois qu'une meilleure façon extraire cette logique à un script séparé et ne pas utiliser le script en ligne.

  2. Script À Distance. Vous pourriez blanche ressources de script https://apis.google.com/js/client.js?onload=handleClientLoad par la section suivante dans manifest.json

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

    aussi, je crois qu'une meilleure façon pourrait être de télécharger la télécommande client.js et l'inclure comme un script local.

s'il vous Plaît être conscient que par la description de Script En Ligne,unsafe-inline plus travail.

jusqu'à Chrome 45, Il n'y avait aucun mécanisme pour assouplir la restriction contre L'exécution de JavaScript en ligne. En particulier, s etter une politique de script qui inclut 'unsafe-inline' n'aura aucun effet.

9
répondu Haibara Ai 2016-04-15 00:10:27