我在配置文件中添加了以下csp设置:
<add name="Content-Security-Policy-Report-Only" value= "
default-src 'none' ;
script-src 'self' 'unsafe-inline' 'unsafe-eval';
style-src 'self' 'unsafe-inline' ;
img-src 'self' csi.gstatic.com dl.edge-cdn.net data: ;
frame-src 'self';
font-src 'self' ;
object-src 'self' ;
connect-src 'self' ;
media-src 'self';
report-uri /csp_report.aspx?cspReport=true" />
所有设置都正常。我也在浏览器控制台中遇到违规行为。我想在csp_report.aspx中报告所有这些违规行为。但是&#34; Request.form&#34;在Page_load事件中为空。我错过了什么吗?
答案 0 :(得分:0)
发送给report-ui
的内容是JSON,而不是application/x-www-form-urlencoded
。您可以直接从HttpContext.Request.InputStream
获取它并对其进行反序列化(可能最简单的方法是使用JSON.NET,因为它最容易控制属性名称等。)。
string requestJson = String.Empty;
context.Request.InputStream.Position = 0;
using (StreamReader requestStreamReader = new StreamReader(context.Request.InputStream))
{
requestJson = requestStreamReader.ReadToEnd();
}
// TODO: Deserialize from JSON string or log the JSON
另外,我建议在页面(.ashx
)上使用处理程序(例如.aspx
文件),因为这个用例更自然(返回没有内容的响应和202状态代码会最合适的。)