从今天开始,在Chrome 73.0.3683.103控制台中,我看到以下错误:
内容安全策略'script-src'report-sample' 'nonce-PNYOS1z63mBa / Tqkqyii''不安全内联'; object-src 'none'; base-uri'self'在仅报告模式下交付,但是 没有指定'report-uri';该政策将无效。请 添加“ report-uri”指令,或通过 “ Content-Security-Policy”标题。
我相信这是来自脚本src =“ https://apis.google.com/js/platform.js” ...似乎一切正常。发起者似乎是https://content.googleapis.com/static/proxy.html?usegapi=1 ...
是什么原因造成的,我该如何解决?
编辑:从今天开始,我不再看到该错误。因此,我认为Google已解决了此问题。
答案 0 :(得分:4)
如果父页面归您所有,则可以执行以下几项操作来更正此问题。如果父页面不属于您,则您无能为力,但是此警告不会影响您的体验。
首先了解一些背景
内容安全策略或CSP是服务器可以设置的标头,该标头告诉浏览器强制将哪些内容可以在您的页面上运行,来自何处以及如何运行的白名单。例如,您可以限制允许从哪个域中获取JavaScript,JavaScript是否可以内联运行或JavaScript可以在哪里发出xhr调用。
CSP可以在两种模式下运行:阻止和报告。
在阻止模式下,浏览器强制执行CSP中列出的策略,并将这些限制应用于您的网页。在阻止模式下,可以选择将任何阻止的内容报告回在CSP的report-uri
指令中指定的端点。在报告模式下,没有任何东西被阻止,只有会被阻止的东西才报告给策略report-uri
指令中指定的端点。
浏览器警告指出您正在以报告模式运行,但尚未指定report-uri
,因此它不知道在何处报告违规情况。实际上,您的CSP只是在浪费带宽而已,因为它没有报告或阻止发现的任何问题。
这为您提供了一些选择:
report-uri
(类似于report-uri: https://example.com/csp_reports
)以接收请求。即使您未在该端点收到任何消息,您的特定控制台警告也会消失(即使未阻止特定的CSP违规,您仍然会收到控制台错误)。report-uri
。从长远来看,从安全的角度来看,这是最好的解决方案,但适用第3步的警告。如果是我,我首先添加一个report-uri
以了解我的页面正在生成什么警告(请注意,有些警告可能是由浏览器扩展触发的,您对此无能为力,但这没关系)。了解了常见的警告后,我将调整CSP以及需要哪些资源来确保页面正在加载,而控制台中没有任何警告或错误。然后,我将CSP切换为阻止模式,以利用其提供的安全优势。
答案 1 :(得分:0)
这与服务器/后端级别设置有关。
如果您可以从提供代码的地方访问服务器,则可以设置标题设置。因此,当前Content-Security-Policy-Report-Only
尚未设置所有必需参数。您可以仅在此处进行检查,并删除此标头(,如果不需要),或设置必需的参数。
您可以从here
中找到标题详细信息