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

Posted

技术标签:

【中文标题】如何在 Chrome 扩展 Manifest.json 中设置内容安全策略以使 Firebase 正常工作【英文标题】:How to set Content Security Policy in Chrome Extension Manifest.json in order for Firebase to work 【发布时间】:2015-09-02 13:04:53 【问题描述】:

我制作了一个 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)。 我究竟做错了什么? Chrome 完全拒绝了“content_security_policy”之后的任何内容。

即使我尝试了 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 不允许我将其称为远程。)

【问题讨论】:

包含您的完整 manifest.json。可能某处有多余的或缺少的逗号。 【参考方案1】:

是的,谢谢 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'"

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

【讨论】:

我遇到了这个问题 'content_security_policy' 的值无效。无法加载清单 你在使用版本 3 @John 我是这么认为的......那么清单 v3 的解决方案是什么......无论如何? @SaurabhVerma

以上是关于如何在 Chrome 扩展 Manifest.json 中设置内容安全策略以使 Firebase 正常工作的主要内容,如果未能解决你的问题,请参考以下文章

如何查看chrome扩展的源代码

如何在网页中调用chrome浏览器里的扩展程序

如何在 Chrome 33+ 中通过 GPO 自动安装 Chrome 扩展(Chrome 错误或 GPO 安装的扩展的未记录更改?)

如何在隐身模式下启用我的 chrome 扩展程序?

如何在隐身模式下启用Chrome扩展程序?

如何在 Chrome 扩展中使用 fontawesome?