2017-03-20 13 views
0

を使用して、私は私の設定ファイルにCSPの設定の下に追加しました:コンテンツセキュリティポリシーレポート-uriのASPページ

<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で報告されるようにしたい。しかし、Page_loadイベントでは "Request.form"は空です。何か不足していますか?

答えて

0

report-uiに送信するコンテンツは、application/x-www-form-urlencodedではなく、JSONです。 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 

また、私はハンドラの使用をお勧めします、それはこのユースケースのために、より自然になるようにページ(.aspx)を超える(例えば、.ashxファイル用)(ここでは最も適しているであろうがないコンテンツと202ステータスコードで応答を返します)。

関連する問題