--- title: Content-Security-Policy-Report-Only slug: Web/HTTP/Headers/Content-Security-Policy-Report-Only translation_of: Web/HTTP/Headers/Content-Security-Policy-Report-Only ---
HTTP Content-Security-Policy-Report-Only
响应头允许web开发人员通过监测(但不强制执行)政策的影响来尝试政策。这些违反报告由 {{Glossary("JSON")}} 文档组成通过一个HTTP POST请求发送到指定的URI。
更多相关信息, 可参见这篇文章 Content Security Policy (CSP).
Header 类型 | {{Glossary("Response header")}} |
---|---|
{{Glossary("Forbidden header name")}} | no |
这个header不支持在 {{HTMLElement("meta")}} 元素内(定义)。 |
Content-Security-Policy-Report-Only: <policy-directive>; <policy-directive>
{{HTTPHeader("Content-Security-Policy")}} header 的指令也可应用于 Content-Security-Policy-Report-Only
.
CSP {{CSP("report-uri")}} 指令需要跟这个header一起用, 否则这个header将会是一个昂贵却无操作(无作用)的机器(设置)。
这个 header 报告(统计)将会发生的违规行为。你可以使用这个header去迭代你的内容安全政策。你观察你的网站的行为,查看违反报告,然后通过 {{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对象包括下面的数据:
document-uri
referrer
blocked-uri
violated-directive
original-policy
Content-Security-Policy
HTTP 头部所指定的原始策略。Content-Security-Header-Report-Only
头。http://example.com/signup.html的页面。它使用了下面的策略,禁止除了来自cdn.example.com
的样式表外的其他任何资源。
Content-Security-Policy-Report-Only: default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports
signup.html
的html如下:<!DOCTYPE html> <html> <head> <title>Sign Up</title> <link rel="stylesheet" href="css/style.css"> </head> <body> ... Content ... </body> </html>
cdn.example.com这个域名的
样式表,然而这个网站试着加载来自自己域名的样式表(http://example.com
)。当文档被访问时,可以执行CSP(内容安全策略)的浏览器将会用POST请求发送以下违规报告到http://example.com/_/csp-reports
:{ "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" } }
正如你所看到的,报告在blocked-uri上记录了
违反资源的完整路径。这并非总是如此。例如,当 signup.html
试图从 http://anothercdn.example.com/stylesheet.css加载
CSS,浏览器不会包含完整路径,只包含来源。这样做是为了防止泄漏跨域资源的敏感信息。
Specification | Status | Comment |
---|---|---|
{{specName("CSP 3.0")}} | {{Spec2('CSP 3.0')}} | No changes. |
{{specName("CSP 1.1")}} | {{Spec2('CSP 1.1')}} | Initial definition. |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("http.headers.Content-Security-Policy-Report-Only")}}