如何在 Chrome Extension Manifest.json 中设置内容安全策略以使 Firebase 正常工作

问题描述 投票:0回答:3

我制作了一个 Chrome 扩展程序并使用 Firebase 将数据收集到数据库中。 一段时间以来它运行良好,但 Chrome 似乎发生了一些变化。 现在,在我的扩展上使用 Inspect Element 时,我在 javascript 控制台中收到以下错误:

拒绝加载脚本“https://(myID).firebaseio.com/(otherprivatedata)”,因为它违反了以下内容安全策略指令:“script-src 'self' chrome-extension-resource:”。

这个脚本是在 firebase.js:171 编写的,它不是我添加的脚本。

我尝试遵循本指南并按照指示将“content_security_policy”标签添加到我的manifest.json中: https://github.com/firebase/firebase-chrome-extension

我按照指示将以下行添加到我的manifest.json中:

"content_security_policy": "script-src 'self' https://cdn.firebase.com https://*.firebaseio.com; object-src 'self'"

但是,当我添加此行时,尝试在 chrome://extensions 中加载脚本时出现错误

加载扩展程序时出错

无法从以下位置加载扩展:~\XXX\my_ext

清单不是有效的 JSON。行:14,列:5,语法错误。

它突出显示了我刚刚在上面添加的行(content_security_policy)。 我究竟做错了什么?似乎“content_security_policy”之后的任何内容都被 Chrome 完全拒绝了。

即使我尝试了 Google 的示例代码,它也不起作用。 developer.chrome.com/extensions/contentSecurityPolicy

"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"

如何设置 content_security_policy 以便 Firebase 在扩展中工作?

(我的 firebase.jp 已经下载并与我的扩展一起打包,因为 Chrome 不允许我将其称为远程。)

javascript json google-chrome google-chrome-extension firebase
3个回答
12
投票

是的,谢谢rsanchez...完全忘记了逗号...

...   
  "options_page": "option.html",
  "manifest_version": 2, <- THIS COMMA
  "content_security_policy": "script-src 'self' https://cdn.firebase.com https://*.firebaseio.com; object-src 'self'"
}

现在可以使用,感谢您的帮助!


1
投票

2022 年更新

Manifest V3 改变了指定内容安全策略的方式。请查看doc。所以根据V3,上述策略现在应该以这种方式指定:

{
  ...
  "manifest_version": 3,
  "content_security_policy": {
    "extension_pages": "script-src 'self' https://cdn.firebase.com https://*.firebaseio.com; object-src 'self'"
  }
  ...
}

0
投票

了解如何在 Chrome 扩展上使用沙箱

在清单 v3 json 文件上

"content_security_policy": {
    "sandbox": "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
  },
  "sandbox": {
    "pages": [
      "index.html"
    ]
  }

https://developer.chrome.com/docs/extensions/reference/manifest/sandbox

© www.soinside.com 2019 - 2024. All rights reserved.