【发布时间】:2020-04-20 12:21:55
【问题描述】:
我查看了类似的帖子How to set Content Security Policy in Chrome Extension Manifest.json in order for Firebase to work。我知道这个问题与 CSP 有关,但是我需要设置的策略是我没有得到的。
我构建了一个使用 jsoneditor 的 chrome 扩展程序,并且该依赖项产生了这个问题。运行扩展程序时出现以下异常
拒绝加载脚本“data:application/javascript;base64,....”,因为它违反了以下内容安全策略指令:“script-src 'self'”。请注意,'script-src-elem' 没有显式设置,因此 'script-src' 用作备用。
和
未捕获的 DOMException:无法在“WorkerGlobalScope”上执行“importScripts”:“data:application/javascript;base64,......”处的脚本无法加载。 在 blob:chrome-extension://nlgocoglacibgkjnhaahkmepblhmelcp/765c13cb-44d4-480c-a6b1-29527766ae5e:1:1
在上面提到的 SO 问题中,像
这样的网址https://cdn.firebase.com https://*.firebaseio.com; 包含在content_security_policy 中。
在我的示例中,脚本不是从域外加载的。在这种情况下如何设置正确的content_security_policy?
【问题讨论】:
-
我猜你需要在 CSP 中允许
data:用于worker-src。 -
@wOxxOm 我试过这个
"content_security_policy": "script-src 'self'; worker-src 'self' data: blob:; object-src 'self'"仍然是同样的错误。 -
终于和
"content_security_policy": "script-src 'self'; script-src-elem 'self' data: blob:; worker-src 'self' data: blob:; object-src 'self'"一起工作了 -
如果你让它工作并且不再需要帮助,你应该发布你自己的解决方案作为答案并关闭问题。
-
@PetrSrníček 发布了我的解决方案。谢谢!
标签: javascript google-chrome-extension jsoneditor