javascript - Chrome 控制台错误 : The Content Security Policy was delivered in report-only mode, 但未指定 'report-uri'

标签 javascript google-chrome google-api

从今天开始,在 Chrome 73.0.3683.103 控制台中,我看到以下错误:

The Content Security Policy 'script-src 'report-sample' 'nonce-PNYOS1z63mBa/Tqkqyii' 'unsafe-inline';object-src 'none';base-uri 'self'' was delivered in report-only mode, but does not specify a 'report-uri'; the policy will have no effect. Please either add a 'report-uri' directive, or deliver the policy via the 'Content-Security-Policy' header.

我相信这是来自脚本 src="https://apis.google.com/js/platform.js"...一切似乎都有效。始作俑者好像是https://content.googleapis.com/static/proxy.html?usegapi=1 ...

是什么原因造成的,我该如何解决?

编辑:截至今天,我不再看到错误。所以我假设谷歌已经解决了这个问题。

最佳答案

如果父页面归您所有,您可以采取一些措施来更正此问题。如果父页面不属于您,您无能为力,但此警告不会影响您的体验。

首先是一些背景:

什么是 CSP?

内容安全策略或 CSP 是您的服务器可以设置的 header ,它告诉浏览器强制执行一个白名单,列出哪些内容可以在您的页面上运行、来自何处以及如何运行。例如,您可以限制允许从哪些域中获取 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。从长远来看,从安全 Angular 来看,这是最佳解决方案,但适用第 3 步中的警告。

如果是我,我会首先添加一个 report-uri 来了解我的页面生成了哪些警告(请注意,有些警告可能是由浏览器扩展触发的 - 您对此无能为力,但那是好的)。一旦我理解了常见的警告,我就会调整 CSP 以及我必须使用哪些资源来确保页面加载时控制台中没有任何警告或错误。然后我会将 CSP 切换到阻塞模式以利用它提供的安全优势。

关于javascript - Chrome 控制台错误 : The Content Security Policy was delivered in report-only mode, 但未指定 'report-uri',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55536845/

相关文章:

javascript - 过滤功能不适用于日期(javascript)

javascript - 如何在显示元素后平滑地淡入/淡出:none value

javascript - Highstock显示不一致

javascript - Selectize.js:将类别标签添加到选择中

css - background-url 属性在不同浏览器中的不同行为

c# - 在 Selenium WebDriver 中启动 Chrome Headless 仍然会导致浏览器窗口空白

css - Chrome 和 Safari 中的 float 错误

c# - 如何通过 C# 使用 Google 联系人数据 API 获取 Google 帐户的联系人照片

python - 谷歌 OAuth 与 Django

python - GAE/Google API 刷新访问 token 时出现 DeadlineExceededErrors