Chrome 忽略 CSP(内容安全策略)影响使用 .NET Core 的 ASP.NET 应用程序上的浏览器 Link

Chrome ignoring CSP (Content Security Policy) affecting Browser Link on ASP.NET application using .NET Core

我正在尝试让浏览器 link 在 .net 核心 asp.net 应用程序上运行。尽管我正确地设置了 CSP(至少我认为我是),Chrome 似乎使用了默认值。这是我在控制台中看到的内容:

这是我在所有视图使用的共享布局中的内容:

这是按 Ctrl+U 时在浏览器 (Chrome) 上呈现的源代码:

令人困惑的部分是控制台中的错误消息说 default-src 设置为 'self' 显然不是这样;我正在指定 default-src https://localhost:*;

我是不是遗漏了什么或者这是一个 google Chrome 问题?也许是我不知道的设置,但我已经搜索了网络并没有找到解决这个问题的方法。

The part that is confusing is that the error messages in the console are saying that the default-src is set to 'self' which is clearly not the case; I am specifying default-src https://localhost:*;

那是因为您的 asp.net 应用通过 HTTP header 发布 CSP(您可以 see it)。

因此您交付了 2 个 CSP:一个通过元标记,第二个 - 通过 HTTP header。在这种情况下,两者都会相应地应用,并且最严格的一个会阻止。

检查 web.config 文件中是否有像这样的行:

<add name="Content-Security-Policy" value="default-src 'self'" />
<content-Security-Policy enabled="true">

同时检查 NWebsec NuGet 包设置 - 它可以通过 web.config 文件、中间件或 MVC 属性发布 CSP header:

  • NWebsec.AspNetCore.Mvc 包提供通过 MVC 属性配置 CSP。
  • NWebsec.AspNetCore.Mvc.TagHelpers 包包括用于管理脚本和样式的标签助手 'nonces'.
  • NWebsec.AspNetCore.Middleware 软件包包含 OWIN CSP 中间件。

您必须使用元标记或 HTTP header 来发布内容安全策略,但不能同时使用。