# Report-To header (/fr/docs/web-security/reporting-api/headers/report-to)



`Report-To` est le header d'origine pour indiquer au navigateur où envoyer les
reports. Il définit des groupes d'endpoints en JSON, avec cache et failover. Il a été
remplacé par le header plus simple [`Reporting-Endpoints`](/fr/docs/web-security/reporting-api/headers/reporting-endpoints) pour presque tous les usages, et
il ne reste indispensable que pour le [Network Error Logging (NEL)](/fr/docs/web-security/policies/network-error-logging).

<Callout type="error" title="Déprécié et non standard">
  `Report-To` n'est jamais devenu un standard du web et n'a été diffusé que dans les navigateurs fondés sur Chromium. Utilisez [Reporting-Endpoints](/fr/docs/web-security/reporting-api/headers/reporting-endpoints) à la place, sauf pour [NEL](/fr/docs/web-security/policies/network-error-logging), qui exige toujours ce header.
</Callout>

```http
Report-To: { "group": "csp-endpoint", "max_age": 10886400,
             "endpoints": [ { "url": "https://<Endpoint-ID>.report.centralcsp.com" } ] }
```

## Valeurs et rôle de chacune [#valeurs-et-rôle-de-chacune]

La valeur est du JSON : un tableau d'objets groupe avec les crochets externes omis, de
sorte qu'un groupe unique s'écrit sans `[ ]` autour. Chaque groupe a ces membres :

| Membre               | Statut      | Rôle                                                                                                       |
| -------------------- | ----------- | ---------------------------------------------------------------------------------------------------------- |
| `group`              | ⚠️ Déprécié | Le nom qu'une politique référence, l'équivalent historique d'un nom d'endpoint dans `Reporting-Endpoints`. |
| `max_age`            | ⚠️ Déprécié | Durée de mise en cache de cette configuration, en secondes ; le modèle global que la v1 a abandonné.       |
| `endpoints`          | ⚠️ Déprécié | Un tableau d'objets URL, optionnellement avec `priority` et `weight` pour le failover.                     |
| `include_subdomains` | ⚠️ Déprécié | Appliquer aussi la configuration aux sous-domaines.                                                        |

## Valeurs non sûres à éviter [#valeurs-non-sûres-à-éviter]

<Callout type="warn">
  Les endpoints doivent être en HTTPS. Un `max_age` long met la configuration en cache, et un attaquant capable de poser des headers sur une réponse pourrait ainsi maintenir en vie des endpoints obsolètes : gardez une valeur raisonnable.
</Callout>

Comme pour tout endpoint de reporting, ne le pointez que vers un hôte de confiance ;
les corps de report peuvent porter des URL et des échantillons de contenu.

## Pourquoi ce header existe [#pourquoi-ce-header-existe]

`Report-To` a été le premier mécanisme de livraison de la Reporting API. Son modèle de
groupement, de cache et de répartition de charge allait plus loin que ce que les
autres moteurs de navigateur voulaient standardiser, d'où son remplacement par
`Reporting-Endpoints` (v1), plus simple. Voir
[Report-To vs Reporting-Endpoints](/fr/docs/web-security/reporting-api/concepts/report-to-vs-reporting-endpoints).

## Ce contre quoi il protège [#ce-contre-quoi-il-protège]

Rien directement. Comme `Reporting-Endpoints`, il n'applique aucune politique ; c'est
le transport qui rend observables les violations de politique et les erreurs réseau.
La valeur, c'est la visibilité, pas l'application.

## Contournements connus et limites [#contournements-connus-et-limites]

Il est réservé à Chromium, n'a jamais été diffusé dans Firefox ni Safari, et il est
remplacé partout sauf pour NEL. Considérez-le comme historique : ne l'utilisez que là
où vous y êtes contraint.

## Risques d'une mauvaise configuration [#risques-dune-mauvaise-configuration]

Les échecs sont silencieux. Une valeur JSON malformée désactive le reporting sans
erreur, et si le nom de `group` ne correspond pas à celui que référence une politique
(ou le header `NEL`), ces reports ne vont nulle part.

## Recommandation [#recommandation]

Utilisez [`Reporting-Endpoints`](/fr/docs/web-security/reporting-api/headers/reporting-endpoints)
pour chaque politique, CSP, COOP, COEP, Permissions-Policy et le reste. Gardez
`Report-To` pour une seule tâche : le [Network Error Logging](/fr/docs/web-security/policies/network-error-logging)
lit toujours son groupe d'endpoints depuis ce header ; un site qui utilise NEL envoie
donc les deux headers ensemble.

```http
Report-To: {"group":"nel-group","max_age":31536000,"endpoints":[{"url":"https://<Endpoint-ID>.report.centralcsp.com"}]}
```

```http
NEL: {"report_to":"nel-group","max_age":31536000,"include_subdomains":true}
```

## Comment le configurer [#comment-le-configurer]

Le seul cas qui exige encore `Report-To` est NEL. Le membre `report_to` du header
`NEL` nomme un groupe défini ici, et les deux headers sont envoyés ensemble. Pointez
l'endpoint du groupe vers le [reporting CentralCSP](/fr/docs/platform/monitoring)
pour collecter le flux d'erreurs réseau aux côtés de vos autres reports.

```http
Report-To: {"group":"nel-group","max_age":31536000,"endpoints":[{"url":"https://<Endpoint-ID>.report.centralcsp.com"}]}
```

```http
NEL: {"report_to":"nel-group","max_age":31536000,"include_subdomains":true,"failure_fraction":1.0}
```

## Prise en charge par les navigateurs [#prise-en-charge-par-les-navigateurs]

Navigateurs fondés sur Chromium uniquement (Chrome, Edge et autres) ; il n'a jamais
été diffusé dans Firefox ou Safari, et la spécification W3C Reporting ne le définit
pas. Pour tout ce qui n'est pas NEL, utilisez plutôt `Reporting-Endpoints`.

## Voir aussi [#voir-aussi]

* [Reporting-Endpoints header](/fr/docs/web-security/reporting-api/headers/reporting-endpoints)
* [Report-To vs Reporting-Endpoints](/fr/docs/web-security/reporting-api/concepts/report-to-vs-reporting-endpoints)
* [Report-To vs Reporting-Endpoints, lequel utiliser](/fr/blog/report-to-vs-reporting-endpoints)
* [Network Error Logging (NEL)](/fr/docs/web-security/policies/network-error-logging)
* [Report network-error](/fr/docs/web-security/reporting-api/reports/network-error)

## Sources [#sources]

* [MDN, Report-To header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Report-To)
* [Chrome, migrate to Reporting API v1](https://developer.chrome.com/blog/reporting-api-migration)
