我检查了类似的帖子如何在Chrome Extension Manifest.json中设置内容安全策略,以便Firebase正常工作。我得到的问题与CSP有关,但是我需要设置的策略是不幸的是我没有得到的。
我构建了一个使用 jsoneditor 的 chrome 扩展,并且依赖关系会产生此问题。运行扩展时,我收到以下异常
拒绝加载脚本 'data:application/javascript;基地64,....'因为它违反了以下内容安全策略指令:"script-src 'self'"。请注意,"script-src-elem"没有明确设置,因此"script-src"用作后备。
和
未捕获的 DOMException:无法在"WorkerGlobalScope"上执行"importScripts":位于"data:application/javascript"的脚本;基地64,......'加载失败。 在斑点:铬-extension://nlgocoglacibgkjnhaahkmepblhmelcp/765c13cb-44D4-480C-A6B1-29527766AE5E:1:1
在上面提到的 SO 问题中,网址如
https://cdn.firebase.com https://*.firebaseio.com;
包含在content_security_policy
中。
在我的示例中,脚本不是从外部域加载的。在这种情况下,如何设置正确的content_security_policy
?
该问题的解决方案是在manifest.json
文件的content_security_policy
中添加script-src-elem 'self' data: blob:;
。
我的看起来像下面,
"content_security_policy": "script-src 'self'; script-src-elem 'self' data: blob:; worker-src 'self' data: blob:; object-src 'self'"