In light of this link, 它似乎是内联脚本,例如用于在页面中插入recaptcha对象,通过
<script type="text/javascript"
src="http://www.google.com/recaptcha/api/challenge?k=your_public_key">
</script>
<noscript>
<iframe src="http://www.google.com/recaptcha/api/noscript?k=your_public_key"
height="300" width="500" frameborder="0"></iframe><br>
<textarea name="recaptcha_challenge_field" rows="3" cols="40">
</textarea>
<input type="hidden" name="recaptcha_response_field"
value="manual_challenge">
</noscript>
或通过
<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
与
Recaptcha.create("your_public_key",
"element_id",
{
theme: "red",
callback: Recaptcha.focus_response_field
}
);
我总是对内容安全政策抱怨,尽管我的manifest.json显然允许网址像http://www.google.com/recaptcha/api/js/recaptcha_ajax.js
我是否遗漏了一些非常明显的问题让整个问题变得疯狂?
答案 0 :(得分:4)
我花了两个小时与之斗争。对我来说,我也想到这个例子,问题在于src
属性;也就是说,在http:
中。更改引用如下:
<script type="text/javascript"
src="https://www.google.com/recaptcha/api/challenge?k=your_public_key">
^ v
<iframe src="https://www.google.com/recaptcha/api/noscript?k=
height="300" width="500" frameborder="0"></iframe>
修复了问题。基本上,您尝试使用不安全的连接访问google api,而某些浏览器(例如Chrome)默认情况下不会呈现不安全的内容。
答案 1 :(得分:1)
在Chrome扩展程序中,无法通过CSP将非安全http
列入白名单
The documentation州:
放宽默认政策
(...)另一方面,如果您需要一些外部JavaScript或 对象资源,您可以在有限的范围内放宽政策 将特定的HTTPS来源列入白名单应该是脚本 公认。 白名单不安全的HTTP资源将无效。 这是故意的,因为我们希望确保可执行文件 加载了扩展程序的提升权限的资源正是如此 您期望的资源,并没有被活动网络取代 攻击者。 因为中间人的攻击既微不足道又有 通过HTTP无法检测到,只接受HTTPS来源。
答案 2 :(得分:0)
您应该将所有资源调用协议相对URL。基本上删除任何http:或https:并使用//
此处有更多信息 http://www.paulirish.com/2010/the-protocol-relative-url/
和Is it valid to replace http:// with // in a <script src="http://...">?