Report-To vs Reporting-Endpoints
La différence entre le header Report-To hérité et le header moderne Reporting-Endpoints, et lequel choisir.
Dernière mise à jour:
Il existe deux générations du header qui déclare les endpoints de reporting.
Report-To est arrivé en premier (souvent appelé Reporting API v0) et
Reporting-Endpoints l'a remplacé (v1). Pour presque tout, vous devriez utiliser
Reporting-Endpoints. La seule exception est le Network Error Logging, qui exige toujours Report-To.
Les deux générations
Report-To (v0) déclare des groupes d'endpoints sous forme de JSON. Un groupe a un
nom, un max_age qui met la configuration en cache, un tableau endpoints qui peut
contenir plusieurs URL avec priorité et poids pour le failover, et un
include_subdomains optionnel. Le modèle en cache et ambiant signifiait qu'une
configuration envoyée sur une réponse pouvait s'appliquer à d'autres pages de
l'origine.
Report-To: { "group": "csp-endpoint", "max_age": 10886400,
"endpoints": [ { "url": "https://<Endpoint-ID>.report.centralcsp.com" } ] }Reporting-Endpoints (v1) abandonne tout cela au profit d'un dictionnaire de champs
structurés de paires name="url" : une URL par nom, pas de groupes, pas de failover,
pas de cache. Il est porté par la réponse sur laquelle il est servi, il doit donc être
présent sur chaque réponse pouvant générer un report.
Reporting-Endpoints: csp-endpoint="https://<Endpoint-ID>.report.centralcsp.com"La spécification W3C Reporting ne définit que Reporting-Endpoints ; Report-To
était un mécanisme de l'ère Chromium qui n'est jamais devenu un standard, ce qui
explique qu'il soit marqué déprécié et non standard et n'ait jamais été diffusé que
dans Chromium.
Ce qui a changé et pourquoi
| Aspect | Report-To (v0) | Reporting-Endpoints (v1) |
|---|---|---|
| Syntaxe | Groupes JSON | Paires name="url" |
| URL par nom | Plusieurs, avec priorité et poids | Une |
| Cache | max_age, ambiant entre les pages | Aucun, par réponse |
| Sous-domaines | include_subdomains | Non applicable |
| Portée | En cache pour l'origine | La réponse sur laquelle il est servi |
| Standard | Non standard, déprécié | W3C Reporting API |
| Prise en charge | Chromium uniquement | Largement pris en charge |
Le groupement et le cache qui faisaient la souplesse de la v0 sont précisément ce que les autres moteurs de navigateur n'étaient pas prêts à standardiser. La v1 échange cette souplesse contre un header simple, par réponse, et ce modèle plus simple est désormais largement pris en charge dans les navigateurs actuels.
La confusion à quatre voies autour de report-to
« report-to » signifie des choses différentes selon le contexte. Gardez-les distincts : le header Report-To (v0), le header Reporting-Endpoints (v1, le remplaçant moderne), la directive CSP report-to (nomme un endpoint depuis une politique), et le paramètre report-to= sur les headers COOP/COEP/Permissions-Policy.
En pratique, la directive et le paramètre ne font que référencer un nom ; l'un des deux headers doit le déclarer :
Reporting-Endpoints: csp-endpoint="https://..."déclare l'endpoint (v1).Report-To: { "group": "csp-endpoint", ... }le déclare à l'ancienne (v0).Content-Security-Policy: ...; report-to csp-endpointle référence depuis CSP.Cross-Origin-Opener-Policy: same-origin; report-to="csp-endpoint"le référence depuis COOP.
Lequel utiliser
Par défaut, utilisez Reporting-Endpoints pour tout : CSP, COOP, COEP,
Permissions-Policy, Document-Policy, Integrity-Policy, et les reports implicites de
dépréciation, d'intervention et de crash. Ne gardez Report-To que sur les réponses
qui envoient aussi le header NEL, car le Network Error Logging n'est pas pris en
charge par la v1. Pour CSP en particulier, la directive report-to a atteint le
statut Baseline en 2026, vous n'avez donc besoin de conserver la directive dépréciée
report-uri que comme repli pour les navigateurs très anciens,
voir report-uri vs report-to.
FAQ
Report-To est-il déprécié ?
Oui. Report-To (Reporting API v0) était un mécanisme de l'ère Chromium qui n'est
jamais devenu un standard, il est donc marqué déprécié et non standard.
Reporting-Endpoints (v1) est le remplaçant moderne, défini par la spécification
W3C Reporting et Baseline dans les navigateurs actuels. Report-To ne subsiste que
pour le Network Error Logging, que la v1 ne prend pas en charge.
Faut-il à la fois Report-To et Reporting-Endpoints ?
Seulement si vous utilisez le Network Error Logging, qui exige encore le header
hérité Report-To. Pour tout le reste, CSP, COOP, COEP, Permissions-Policy,
Document-Policy, Integrity-Policy, et les reports implicites de dépréciation,
d'intervention et de crash, Reporting-Endpoints seul suffit. Ne gardez Report-To
que sur les réponses qui envoient aussi le header NEL.
report-to vs report-uri dans CSP ?
Ce sont des générations différentes de la directive de reporting de CSP.
report-to nomme un endpoint déclaré par un header Reporting-Endpoints (ou
Report-To) et délivre des reports structurés de la Reporting API. report-uri est
la directive plus ancienne qui prend une URL directement. report-to a atteint le
statut Baseline en 2026 ; ne gardez report-uri que comme repli pour les
navigateurs très anciens.
Voir aussi
- Reporting-Endpoints header
- Report-To header
- Network Error Logging (NEL)
- Report-To vs Reporting-Endpoints, lequel utiliser
Sources
ReportingObserver
ReportingObserver est une API JavaScript qui laisse une page lire ses propres reports en interne, y compris les reports mis en tampon avant son exécution.
Le endpoint de reporting par défaut
Le endpoint default dans Reporting-Endpoints capte les types de report sans cible explicite, dont les reports de dépréciation, intervention et crash.