Chrome控制台错误:“内容安全策略”以仅报告模式提供,但未指定“ report-uri”

时间:2019-04-05 13:47:09

标签: javascript google-chrome google-api

从今天开始,在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已解决了此问题。

2 个答案:

答案 0 :(得分:4)

如果父页面归您所有,则可以执行以下几项操作来更正此问题。如果父页面不属于您,则您无能为力,但是此警告不会影响您的体验。

首先了解一些背景

什么是CSP?

内容安全策略或CSP是服务器可以设置的标头,该标头告诉浏览器强制将哪些内容可以在您的页面上运行,来自何处以及如何运行的白名单。例如,您可以限制允许从哪个域中获取JavaScript,JavaScript是否可以内联运行或JavaScript可以在哪里发出xhr调用。

CSP可以在两种模式下运行:阻止报告

在阻止模式下,浏览器强制执行CSP中列出的策略,并将这些限制应用于您的网页。在阻止模式下,可以选择将任何阻止的内容报告回在CSP的report-uri指令中指定的端点。在报告模式下,没有任何东西被阻止,只有会被阻止的东西才报告给策略report-uri指令中指定的端点。

您的特定问题

浏览器警告指出您正在以报告模式运行,但尚未指定report-uri,因此它不知道在何处报告违规情况。实际上,您的CSP只是在浪费带宽而已,因为它没有报告或阻止发现的任何问题。

这为您提供了一些选择:

  1. 什么都不做。您的CSP不会警告您任何问题(控制台中消息之外),也不会阻止任何内容。
  2. 添加一个report-uri(类似于report-uri: https://example.com/csp_reports)以接收请求。即使您未在该端点收到任何消息,您的特定控制台警告也会消失(即使未阻止特定的CSP违规,您仍然会收到控制台错误)。
  3. 将CSP切换为阻止模式。您将不会收到任何报告,但是警告将消失,因为CSP现在用于阻止内容。 警告不要这样做,因为它说它阻塞了很多事情。这表明您的网站可能会崩溃。首先,通过调整CSP或更改您正在使用的资源来解决其阻塞的问题,然后将其切换为阻塞模式。
    1. 将CSP切换为阻止模式并添加report-uri。从长远来看,从安全的角度来看,这是最好的解决方案,但适用第3步的警告。

如果是我,我首先添加一个report-uri以了解我的页面正在生成什么警告(请注意,有些警告可能是由浏览器扩展触发的,您对此无能为力,但这没关系)。了解了常见的警告后,我将调整CSP以及需要哪些资源来确保页面正在加载,而控制台中没有任何警告或错误。然后,我将CSP切换为阻止模式,以利用其提供的安全优势。

答案 1 :(得分:0)

这与服务器/后端级别设置有关。

如果您可以从提供代码的地方访问服务器,则可以设置标题设置。因此,当前Content-Security-Policy-Report-Only尚未设置所有必需参数。您可以仅在此处进行检查,并删除此标头(,如果不需要),或设置必需的参数。

您可以从here

中找到标题详细信息