内容安全策略包括脚本

47

我需要在我的网站中包含此脚本https://apis.google.com/js/api:client.js。在Google Chrome上它可以正常运行,但在Firefox(和IE显然)上,我遇到了一些错误:

内容安全策略:在script-src中忽略“'unsafe-inline'”:“strict-dynamic”指定
内容安全策略:在script-src中忽略“https:”:“strict-dynamic”指定
内容安全策略:在script-src中忽略“http:”:“strict-dynamic”指定

我尝试更改标签中的内容安全策略头,但未成功。

我尝试使用以下所有选项:

<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src 'self'; script-src 'self' apis.google.com; style-src 'self';">
<meta http-equiv="Content-Security-Policy" content="default-src 'self' apis.google.com">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' https://*.google.com; object-src 'self' 'unsafe-eval'"> 
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' apis.google.com;">

你能分享一下你当前配置的CSP头吗? - Nico Haase
我尝试了所有这些:<meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src 'self'; script-src 'self' https://apis.google.com; style-src 'self';"> <meta http-equiv="Content-Security-Policy" content="default-src 'self' https://apis.google.com"> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' https://*.google.com; object-src 'self' 'unsafe-eval'"> <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' https://apis.google.com;"> - Mattia Billa
我也尝试将代码直接复制到脚本标签中,但它也没有起作用。 - Mattia Billa
2
我曾经遇到过非常类似的问题(这个脚本在Chrome上可以运行,但在Firefox上却不行)。我在控制台中看到了相同的错误信息,但解决方案与我的Firefox插件之一(Ghostery)有关。禁用插件后,一切都开始正常工作了。 - Mariusz
4
你好。你有找到解决方法吗?当我在我的网站上嵌入Disqus时,我在Firefox/Edge中得到了完全相同的警告。 - Drenai
显示剩余6条评论
2个回答

41

我知道这个问题已经有一年了,但它仍然是搜索这个问题时出现的第一件事情之一,而且至今没有正确的答案。

我明白。我是那些喜欢在生产环境中看到原始控制台的人之一,所以像这样的东西让我抓狂,但实际上我们无能为力。Firefox 在不应该输出警告到控制台时却在向控制台报告警告。

MozillaGoogle 都建议在 CSP3 的“strict-dynamic”之外包含后备 CSP1 策略。了解“strict-dynamic”的浏览器应该忽略CSP1策略,而不了解的浏览器应该忽略未识别的“strict-dynamic”并遵循CSP1策略。关键词是 ignore,真正的忽略包括不宣布你正在忽略。


2
根据Firefox的说法,你也可以忽略它:https://www.reddit.com/r/firefox/comments/fpptyj/firefox_content_security_policy_console_output/ - ivanleoncz

3

您需要编辑服务器HTTP头部而不是HTML中的CSP头部,您控制了服务器吗?

因为HTTP标头优先于元标签等内容,所以这些将被忽略,请先修复HTTP标头。


3
虽然这是一个旧问题(和答案),但仍然存在问题...我真诚地怀疑他控制他在问题中指定的服务器:apis.google.com :) - HeyHeyJC
如果你只是对更改网站非常感兴趣,那么没有太多人能做的事情,你需要使用某种代理,并编辑你想要的头文件。 - Rainb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接