Chrome Extensionをリロードすると、このエラーが表示されます。
Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:".
at new Function (<anonymous>)
at evalExpression (compiler.js:33919)
at jitStatements (compiler.js:33937)
at JitCompiler.webpackJsonp.../../../compiler/esm5/compiler.js.JitCompiler._interpretOrJit (compiler.js:34520)
at JitCompiler.webpackJsonp.../../../compiler/esm5/compiler.js.JitCompiler._compileTemplate (compiler.js:34448)
at compiler.js:34347
at Set.forEach (<anonymous>)
at JitCompiler.webpackJsonp.../../../compiler/esm5/compiler.js.JitCompiler._compileComponents (compiler.js:34347)
at compiler.js:34217
at Object.then (compiler.js:474)
Manifest.jsonにこれがあります:
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
そのエラーを回避するために使用できる他の設定はありますか?
A chrome拡張機能ではunsafe-eval
、またはeval
実際には。
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_Security_Policy
Chrome拡張機能を作成する場合、コンテンツセキュリティポリシーによって厳しく制限されていることを理解してください。WebExtensionsコンテンツセキュリティポリシーを読んで理解してください。
<script>
alert('hello')
</script>
スクリプトタグの内容を計算してSHA256値にし、それをマニフェストに追加して、実行を許可する必要があります。
数時間かかりましたが、おそらくあなたがしたいことは、Webpackが使用するソースマッピングのスタイルを変更することです。デフォルトでは、evalを使用します。
https://webpack.js.org/configuration/devtool/
これをwebpack.config.jsに追加しました:devtool: 'cheap-module-source-map'
これの秘Theは、なぜwebpack --mode development
にはエラーがあり、webpack --mode production
しませんでした。
また、私はReact not Polymerを使用していますが、これはまだ当てはまります。
マニフェスト経由で克服するための興味深い読み取り
https://developer.chrome.com/extensions/contentSecurityPolicy
評価されたJavaScript
ポリシーに「unsafe-eval」を追加することにより、eval()およびsetTimeout(String)、setInterval(String)、new Function(String)などの関連クラスに対するポリシーを緩和できます。
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
ただし、これを行わないことを強くお勧めします。これらの機能は悪名高いXSS攻撃ベクトルです。