chrome拡張機能を作成していますが、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:"
そして
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.
これは私のmanifest.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'"
}
}
このエラーを修正するための支援は大歓迎です。
デフォルトでは コンテンツセキュリティポリシー で、インラインスクリプトは読み込まれず、ローカルスクリプトのみを読み込むことができます。次の方法でデフォルトのポリシーを緩和できます。
インラインスクリプト。 公式ガイド をご覧ください。インラインスクリプトは、ポリシーでソースコードのbase64エンコードハッシュを指定することでホワイトリストに登録できます。例については、 要素のハッシュの使用法 を参照してください。
しかし、より良い方法は、このロジックを別のスクリプトに抽出し、インラインスクリプトを使用しないことです。
リモートスクリプト。スクリプトリソースをホワイトリストに登録できますhttps://apis.google.com/js/client.js?onload=handleClientLoad
次のセクションのmanifest.json
"content_security_policy":"script-src 'self' https://apis.google.com; object-src 'self'"
また、リモートclient.js
をローカルスクリプトとして含めます。
インラインスクリプト 、unsafe-inline
は機能しなくなりました。
Chrome 45までは、インラインJavaScriptの実行に対する制限を緩和するメカニズムはありませんでした。特に、「unsafe-inline」を含むスクリプトポリシーを設定するs '効果はありません。