--- title: Content-Security-Policy-Report-Only slug: Web/HTTP/Headers/Content-Security-Policy-Report-Only tags: - CSP - Content-Security-Policy - HTTP - HTTPS - Reference - Security - Sécurité - header translation_of: Web/HTTP/Headers/Content-Security-Policy-Report-Only ---
L'en-tête de réponse HTTP Content-Security-Policy-Report-Only
permet aux développeurs web d'expérimenter avec les règles CSP en contrôlant leur application sans bloquer de contenu. Ces rapports de violations sont constitués d'un document {{Glossary("JSON")}} envoyé via une requête HTTP POST
à l'URI spécifiée.
Pour plus d'informations, voir aussi cet article sur les Content Security Policy (CSP).
Type d'en-tête | {{Glossary("Response header")}} |
---|---|
{{Glossary("Forbidden header name")}} | non |
Cet en-tête n'est pas supporté au sein d'un élément {{HTMLElement("meta")}}. |
Content-Security-Policy-Report-Only: <policy-directive>; <policy-directive>
Les directives de l'en-tête {{HTTPHeader("Content-Security-Policy")}} peuvent aussi être appliquées à l'en-tête Content-Security-Policy-Report-Only
.
La directive CSP {{CSP("report-uri")}} doit être utilisée avec celui-ci, ou définir cet en-tête ne servirait à rien puisqu'aucun rapport ne serait envoyé.
Cet en-tête rapporte les violations qui seront constatées. Vous pouvez l'utiliser pour améliorer vos CSP. Vous pouvez observer comment votre site fonctionne en consultant les rapports ou redirections malicieuses, puis choisir les règles voulues pour bloquer le contenu avec l'en-tête {{HTTPHeader("Content-Security-Policy")}}.
Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/
Si vous voulez toujours recevoir des rapports, mais aussi imposer des règles, utilisez l'en-tête {{HTTPHeader("Content-Security-Policy")}} avec la directive {{CSP("report-uri")}}.
Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/
L'objet de rapport JSON contient les informations suivantes :
blocked-uri
document-uri
), alors l'URI bloquée est tronquée pour contenir uniquement le schéma, l'hôte et le port.disposition
"enforce"
, soit "report"
, selon que l'en-tête qui a déclenché l'envoi du rapport est {{HTTPHeader("Content-Security-Policy")}} ou Content-Security-Policy-Report-Only
.document-uri
effective-directive
original-policy
Content-Security-Policy-Report-Only
.referrer
script-sample
status-code
violated-directive
http://example.com/signup.html
. Elle utilise la règle CSP suivante, interdisant tout excepté les feuilles de styles chargées depuis cdn.example.com
.Content-Security-Policy-Report-Only: default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports
signup.html
ressemble à :<!DOCTYPE html> <html> <head> <title>Sign Up</title> <link rel="stylesheet" href="css/style.css"> </head> <body> ... Content ... </body> </html>
cdn.example.com
, et pourtant le site tente d'en charger une depuis sa propre origine (http://example.com
). Un navigateur capable d'imposer des règles CSP enverra le rapport de violation suivant sous la forme d'une requête POST à l'adresse http://example.com/_/csp-reports
quand la page sera visitée :{ "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" } }
Comme vous le voyez, la rapport inclut le chemin complet de la ressource à l'origine de la violaton dans la propriété blocked-uri
. Ce n'est pas toujours le cas. Par exemple, quand la page signup.html
essaiera de charger un CSS depuis http://anothercdn.example.com/stylesheet.css
, le navigateur n'inclura pas le chemin complet mais seulement son origine (http://anothercdn.example.com
). Cela est fait pour empêcher les fuites d'informations sensibles à propos de ressources externes.
Spécification | Statut | Commentaire |
---|---|---|
{{specName("CSP 3.0")}} | {{Spec2('CSP 3.0')}} | Inchangé. |
{{specName("CSP 1.1")}} | {{Spec2('CSP 1.1')}} | Définition initiale. |
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")}}