我的Chrome应用有以下清单:
{
"name": ",
"version": "1.0.3",
"manifest_version": 2,
"description": "Chrome Extension for.",
"icons": {
"16": "images/test.png",
"19": "images/test.png",
"256": "images/test.png"
},
"app": {
"background": {
"scripts": [
"background.js"
]
}
},
"sandbox": {
"js": [
"lib/test-api.js"
]
},
"permissions": [
"<all_urls>",
"notifications",
"storage",
"videoCapture"
]
}
我有一个运行eval
的脚本文件。我已阅读有关CSP和沙盒的内容,但我仍然收到此错误:
拒绝将字符串评估为JavaScript,因为'unsafe-eval'是 以下内容安全性中不允许使用脚本源 政策指令:“default-src'self'chrome-extension-resource:”。 请注意,'script-src'未显式设置,因此'default-src'是 用作后备。
答案 0 :(得分:40)
您是否尝试根据CSP链接将CSP行添加到您的清单?
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
答案 1 :(得分:34)
您所展示的内容不一个Chrome extension,但Chrome app。 Chrome扩展程序可让您放宽默认的内容安全政策; Chrome应用不会。(来源:CSP docs for Chrome apps;注意:此页面与CSP docs for Chrome extensions不同。)
下一行适用于应用和扩展程序:
sandbox.pages
key in the manifest file)。您无法使用“js”作为沙盒中的密钥。在Chrome扩展程序中,可以放宽CSP,例如:允许eval
使用以下政策:
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
要在扩展程序中启用您的应用:请勿使用apps
键,而是使用background
键。使用以下清单,您可以在后台页面中使用eval
:
{
"name": "Whatever",
"version": "1.0.3",
"manifest_version": 2,
"background": {
"scripts": [
"background.js"
]
},
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}
(省略icons
/ permissions
,因为它们与示例无关;省略sandbox
,因为它不需要)