我有一个角度2客户端,资源服务器和身份验证服务器。一切都在顺利进行,直到我今天下午戛然而止
这是我得到的错误的图像
让我补充一点,我已经看到了与此相关的几个问题,并尝试了几乎所有规定的解决方案都无济于事
我还有以下课程,可以为我提供此政策违规的保障
public class SecurityHeadersAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext context)
{
var result = context.Result;
if (result is ViewResult)
{
if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Type-Options"))
{
context.HttpContext.Response.Headers.Add("X-Content-Type-Options", "nosniff");
}
if (!context.HttpContext.Response.Headers.ContainsKey("X-Frame-Options"))
{
context.HttpContext.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
}
var csp = "default-src 'self'";
// once for standards compliant browsers
if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security-Policy"))
{
context.HttpContext.Response.Headers.Add("Content-Security-Policy", csp);
}
// and once again for IE
if (!context.HttpContext.Response.Headers.ContainsKey("X-Content-Security-Policy"))
{
context.HttpContext.Response.Headers.Add("X-Content-Security-Policy", csp);
}
}
}
}
然而,似乎将“Microsoft.AspNetCore.Mvc.Core”从版本1.1.2升级到1.1.3之后,我的封面已被破坏。 我怎样才能应对这一挑战?
答案 0 :(得分:1)
您的CSP政策需要允许来自https://ajax.aspnetcdn.com
的内容。所以尝试改变这个:
var csp = "default-src 'self'";
......对此:
var csp = "default-src 'self'; style-src https://ajax.aspnetcdn.com"; script-src https://ajax.aspnetcdn.com;
但是根据问题中引用的错误消息,Content-Security-Policy
标头值似乎已经设置在应用程序代码的那一部分以外的其他位置。
因此,不要使用仅添加其他标头的context.HttpContext.Response.Headers.Add
,而是尝试使用context.HttpContext.Response.Headers.Set
覆盖现有值。
如果你这样做,你还想删除你所设置的地方周围的if
条件。
所以尝试改变这个:
if (!context.HttpContext.Response.Headers.ContainsKey("Content-Security-Policy"))
{
context.HttpContext.Response.Headers.Add("Content-Security-Policy", csp);
}
...就这样:
context.HttpContext.Response.Headers.Set("Content-Security-Policy", csp);
...所以最后你们一起拥有:
var csp = "default-src 'self'; style-src https://ajax.aspnetcdn.com"; script-src https://ajax.aspnetcdn.com;
context.HttpContext.Response.Headers.Set("Content-Security-Policy", csp);
如果这不起作用,那么您需要在后端代码中找到设置Content-Security-Policy
标头值的其他位置,并更改它以使值包括style-src https://ajax.aspnetcdn.com"; script-src https://ajax.aspnetcdn.com
。