我制作了一个 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 不允许我将其称为远程。)
是的,谢谢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'"
}
现在可以使用,感谢您的帮助!
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'"
}
...
}
了解如何在 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