【发布时间】:2019-11-30 11:14:56
【问题描述】:
我正在尝试在 asp.net 核心 webapp 中设置 CSP,并且 CSP 部分工作正常,我可以在浏览器控制台中看到违规行为,因为它们被发送到 report-uri 端点。
但是,我似乎无法在控制器中创建正确的方法来接收这些消息!
我在控制器中创建了一个方法:
[HttpPost]
[AllowAnonymous]
public IActionResult UriReport(CspReportRequest request)
{
_log.LogError("CSP violation: " + request);
return Ok();
}
它会被调用,但'request'参数始终为空。一些搜索显示我需要使用 [FromBody] 属性从正文中读取数据,但是一旦我将其放入,它就不再被调用。 (CspReportRequest 是一个属性与 csp-report 有效负载匹配的类,但它也不适用于字符串类型。)
因此,进一步阅读建议我为“application/csp-report”内容类型添加一个处理程序,将主体发送为:
services.Configure<MvcOptions>(options => {
options.InputFormatters.OfType<JsonInputFormatter>().First().SupportedMediaTypes.Add(
new MediaTypeHeaderValue("application/csp-report"));
});
但这似乎并没有什么不同。
那么 - 我如何制作正确的控制器签名和/或正确的服务处理程序选项来接收数据。
【问题讨论】:
标签: c# asp.net-core asp.net-core-2.0