在Chrome 73.0.3683.103控制台中,截至今天,我看到以下错误:
内容安全策略'script-src 'report-sample' ' nonce-PNYOS 1 z63 mBa/Tqkqyii' ' unsafe-inline '; 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已经解决了这个问题。
3条答案
按热度按时间noj0wjuj1#
如果父页面由您拥有,您可以做几件事来纠正此错误。如果父页面不属于您,您将无法执行任何操作,但此警告不会影响您的体验。
首先是背景:
什么是CSP?
内容安全策略或CSP是服务器可以设置的头,它告诉浏览器强制执行白名单,内容可以在页面上运行,它可以来自哪里,以及它可以如何运行。例如,您可以限制允许从哪些域获取JavaScript,JavaScript是否可以内联运行,或者JavaScript可以向何处发出xhr调用。
CSP可以在两种模式下运行:拦截和上报。
在阻止模式下,浏览器会强制执行CSP中规定的策略,并将这些限制应用于您的网页。在阻塞模式下,您可以选择将任何被阻塞的内容报告回CSP的
report-uri
指令中指定的端点。在报告模式下,没有任何东西被阻止,只有那些会被阻止的东西会被报告给策略report-uri
指令中指定的端点。您的具体问题
浏览器警告说,您正在 * 报告 * 模式下运行,但您没有指定
report-uri
,因此它不知道在哪里报告违规。实际上,您的CSP除了浪费带宽之外什么也没做,因为它没有报告或阻止它发现的任何问题。这给你留下了几个选择:
1.什么都别做您的CSP不会提醒您任何问题(控制台中的消息之外),也不会阻止任何内容。
1.添加一个
report-uri
(类似于report-uri: https://example.com/csp_reports
)来接收请求。即使您在该端点上没有接收到任何内容,您的特定控制台警告也会消失(您仍然会收到特定CSP违规的控制台错误,即使它们没有被阻止)。1.将CSP切换到阻塞模式。您不会收到任何报告,但警告将消失,因为CSP现在用于阻止内容。警告如果它说它阻止了很多东西,请不要这样做。这表明您的网站可能会崩溃。首先,通过调整CSP或更改您正在使用的资源来修复它阻塞的问题,然后将其转换为阻塞模式。
1.将CSP切换到阻塞模式并添加
report-uri
。从长远来看,从安全Angular 来看,这是最佳解决方案,但步骤3中的警告仍然适用。如果是我,我会首先添加一个
report-uri
来了解我的页面正在生成哪些警告(注意,有些可能是由浏览器扩展触发的-对此您无能为力,但这没关系)。一旦我理解了常见的警告,我会调整CSP和我必须使用的资源,以确保页面在控制台中加载时没有任何警告或错误。然后,我将CSP切换到阻塞模式,以利用它提供的安全优势。0x6upsns2#
这与服务器/后端级别设置有关。
如果您可以从提供代码的服务器访问服务器,则可以设置头设置。因此,目前
Content-Security-Policy-Report-Only
已设置为没有所有必需的参数。您可以在那里检查并删除此头(如果不需要),或者设置所需的参数。您可以从here中找到标题详细信息
xjreopfe3#
一个可能的解决方案是删除一些Chrome扩展程序。我过去也遇到过类似的问题,我通过禁用某些可能与内容安全策略冲突的扩展来解决它。通过这样做,它允许加载网页而不会触发错误。我建议尝试这种方法,看看它是否有助于解决问题。
请注意,此解决方案可能并不适用于所有情况,因为内容安全策略错误的原因可能各不相同。但是,删除冲突的扩展是排除故障和解决此类问题的好的第一步。
请记住,始终要查看您删除的扩展,并考虑它们可能对您的浏览体验或它们提供的功能产生的影响。