--- title: Content-Security-Policy-Report-Only slug: Web/HTTP/Headers/Content-Security-Policy-Report-Only tags: - CSP - HTTP - HTTPS - Reference - Security - header translation_of: Web/HTTP/Headers/Content-Security-Policy-Report-Only ---
HTTP の Content-Security-Policy-Report-Only
レスポンスヘッダーにより、ウェブ開発者はポリシーの効果を監視する (ただし強制はしない) ことによりポリシーを試行することができます。これらの違反レポートは {{Glossary("JSON")}} の文書で構成され、 HTTP の POST
リクエストを通して指定された URI に送信されます。
詳細については、コンテンツセキュリティポリシー (CSP) のこの記事も参照してください。
ヘッダー種別 | {{Glossary("Response header", "レスポンスヘッダー")}} |
---|---|
{{Glossary("Forbidden header name", "禁止ヘッダー名")}} | いいえ |
This header is not supported inside a {{HTMLElement("meta")}} element. |
Content-Security-Policy-Report-Only: <policy-directive>; <policy-directive>
{{HTTPHeader("Content-Security-Policy")}} ヘッダーのディレクティブは Content-Security-Policy-Report-Only
にも適用することができます。
CSP の {{CSP("report-uri")}} ディレクティブをこのヘッダーで使用しないと、このヘッダーは負荷が高く何もしない機械となります。
このヘッダーは発生した違反を報告します。これを使用して、コンテンツセキュリティポリシーを反復的に処理できます。サイトがどのように動作するのかを観察したり、違反レポートやマルウエアリダイレクトを監視したりして、 {{HTTPHeader("Content-Security-Policy")}} ヘッダーで強制することが要求されるポリシーを選択します。
Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/
レポートを受信し続けながら、ポリシーの強制も行いたい場合は、 {{HTTPHeader("Content-Security-Policy")}} ヘッダーに {{CSP("report-uri")}} ディレクティブを指定して使用してください。
Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/
レポート JSON オブジェクトには、次のデータが含まれています。
blocked-uri
disposition
"enforce"
or "report"
depending on whether the {{HTTPHeader("Content-Security-Policy")}} header or the Content-Security-Policy-Report-Only
header is used.document-uri
effective-directive
original-policy
Content-Security-Policy-Report-Only
HTTP header.referrer
script-sample
status-code
violated-directive
http://example.com/signup.html
. It uses the following policy, disallowing everything but stylesheets from cdn.example.com
.Content-Security-Policy-Report-Only: default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports
signup.html
looks like this:<!DOCTYPE html> <html> <head> <title>Sign Up</title> <link rel="stylesheet" href="css/style.css"> </head> <body> ... Content ... </body> </html>
cdn.example.com
, yet the website tries to load one from its own origin (http://example.com
). A browser capable of enforcing CSP will send the following violation report as a POST request to http://example.com/_/csp-reports
, when the document is visited:{ "csp-report": { "document-uri": "http://example.com/signup.html", "referrer": "", "blocked-uri": "http://example.com/css/style.css", "violated-directive": "style-src cdn.example.com", "original-policy": "default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports", "disposition": "report" } }
As you can see, the report includes the full path to the violating resource in blocked-uri
. This is not always the case. For example, when the signup.html
would attempt to load CSS from http://anothercdn.example.com/stylesheet.css
, the browser would not include the full path but only the origin (http://anothercdn.example.com
). This is done to prevent leaking sensitive information about cross-origin resources.
仕様書 | 状態 | 備考 |
---|---|---|
{{specName("CSP 3.0")}} | {{Spec2('CSP 3.0')}} | 変更なし |
{{specName("CSP 1.1")}} | {{Spec2('CSP 1.1')}} | 初回定義 |
{{Compat("http.headers.Content-Security-Policy-Report-Only")}}