【问题标题】:Scripts not getting loaded in the chrome extension脚本未在 chrome 扩展中加载
【发布时间】: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


【解决方案1】:

问题的解决方法是在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'"

【讨论】:

  • linux mint 中 Google Chrome 的这个 manisfest.json 文件在哪里。
猜你喜欢
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 2015-04-21
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多