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.
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:
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.
Script À Distance. Vous pourriez blanche ressources de script
https://apis.google.com/js/client.js?onload=handleClientLoad
par la section suivante dansmanifest.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.