Chr*_*ski 14 google-chrome-extension content-security-policy
我正在编写一个chrome扩展,需要在其白名单中有两个域用于内容安全策略.我看过官方文档,但我似乎还无法弄清楚正确的语法.
以下似乎不起作用:
"content_security_policy": "script-src 'self' https://foo.com https://example.com; object-src 'self'"
Run Code Online (Sandbox Code Playgroud)
编辑:
我的内容脚本和弹出窗口都可以访问foo.com,但是,它们都无法访问example.com.
Chrome扩展程序是否能够在CSP中将多个来源列入白名单?
aps*_*ers 13
根据我对CSP的了解,这在语法上看是正确的.关于CSP的HTML5 Rocks文章同意你的语法,说:
script-src https://host1.com https://host2.com将两个来源正确指定为有效.
但是,您的问题可能是:
此CSP 不允许所有子域,包括www.foo.com和www.example.com.您可以显式添加这些子域主机名,也可以使用它https://*.foo.com来允许所有子域.
如果您的任何脚本请求重定向到不允许的域,则请求将失败.例如,如果https://example.com/foo.js使用301或302重定向到https://notpermitted.com/foo.js(不允许的来源)或https://www.example.com/foo.js(不允许的子域),请求将根据规范失败:
每当用户代理提取URI(包括跟踪重定向时)...如果URI与允许的脚本源不匹配,则用户代理必须表现得好像它已收到空的HTTP 400响应...
编辑:
只是要确认,是的,Chrome扩展程序可以将多个HTTPS来源列入白名单.您可以构建一个简单的扩展来测试它:
的manifest.json
{
"name":"CSP Test",
"version":"1.0",
"manifest_version":2,
"browser_action":{
"default_popup":"csp_test.html"
},
"content_security_policy": "script-src 'self' https://www.iana.org https://ajax.googleapis.com; object-src 'self'"
}
Run Code Online (Sandbox Code Playgroud)
csp_test.html
<script src="https://www.iana.org/_js/2013.1/jquery.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script src="csp_test.js"></script>
Run Code Online (Sandbox Code Playgroud)
csp_test.js
alert(jQuery)
alert(jQuery.ui)
Run Code Online (Sandbox Code Playgroud)
此扩展从远程域加载jQuery和jQuery UI.如果从CSP中删除任一源,您将看到一个" undefined"警告,表示其中一个库无法加载.
| 归档时间: |
|
| 查看次数: |
11074 次 |
| 最近记录: |