# Report COOP (/fr/docs/web-security/reporting-api/reports/coop)



Un report `coop` vous indique que [Cross-Origin-Opener-Policy (COOP)](/fr/docs/web-security/policies/cross-origin-opener-policy) est intervenue : soit une navigation a changé de browsing context group, soit, en mode report-only, un script cross-origin a tenté d'accéder à une propriété au-delà de la frontière COOP. C'est ainsi que vous mesurez l'impact de l'activation de COOP, et que vous repérez les accès inter-fenêtres inattendus.

<Callout type="warn" title="Expérimental">
  Le reporting COOP est encore en cours de standardisation, et les noms des champs du body varient entre l'explainer, la spec et Chromium. Considérez le payload ci-dessous comme indicatif et vérifiez-le sur une capture réelle.
</Callout>

## Quand le navigateur l'envoie [#quand-le-navigateur-lenvoie]

COOP émet deux familles de report. Les **navigation reports** se déclenchent quand une navigation provoque un changement de browsing context group (l'isolation que COOP existe pour appliquer). Les **access reports**, qui sont report-only, se déclenchent quand un script cross-origin tente de lire une propriété au-delà de la frontière COOP, c'est-à-dire l'accès inter-fenêtres que COOP bloque. Utilisez le header `Cross-Origin-Opener-Policy-Report-Only` pour observer les deux sans isoler réellement.

## Exemple de payload [#exemple-de-payload]

```json
{
  "type": "coop",
  "age": 9,
  "url": "https://example.com/",
  "user_agent": "Mozilla/5.0 ...",
  "body": {
    "disposition": "enforce",
    "effectivePolicy": "same-origin",
    "nextResponseURL": "https://attacker.example/",
    "referrer": "https://example.com/",
    "type": "navigation-from-response"
  }
}
```

Chaque body de report `coop` porte ces champs à l'intérieur de l'enveloppe de report partagée.

## Référence des champs [#référence-des-champs]

| Champ                                          | Signification                                                             |
| ---------------------------------------------- | ------------------------------------------------------------------------- |
| `disposition`                                  | `enforce`, ou `report` pour un access report en report-only.              |
| `effectivePolicy`                              | La valeur COOP en vigueur, par exemple `same-origin`.                     |
| `previousResponseURL` / `nextResponseURL`      | Les documents de chaque côté d'un navigation report (assainis).           |
| `referrer`                                     | Le referrer de la navigation.                                             |
| `property`                                     | (Access reports) la propriété que le script cross-origin a tenté de lire. |
| `openerURL` / `openeeURL` / `otherDocumentURL` | (Access reports) l'autre document impliqué (assaini).                     |
| `sourceFile`, `lineNumber`, `columnNumber`     | (Access reports) l'origine de l'accès.                                    |
| `type`                                         | Le marqueur de variante (une variante navigation ou access).              |

## Comment le recevoir [#comment-le-recevoir]

Ajoutez un paramètre `report-to="..."` au header COOP (ou à sa variante Report-Only) et déclarez cet endpoint dans [`Reporting-Endpoints`](/fr/docs/web-security/reporting-api/headers/reporting-endpoints). CentralCSP collecte le [flux coop](/fr/docs/platform/monitoring/coop).

```http
Reporting-Endpoints: coop-endpoint="https://<Endpoint-ID>.report.centralcsp.com"
```

```http
Cross-Origin-Opener-Policy-Report-Only: same-origin; report-to="coop-endpoint"
```

## Ce qu'il vous apprend sur la sécurité [#ce-quil-vous-apprend-sur-la-sécurité]

Les navigation reports montrent où l'activation de l'isolation changerait le comportement des liens et des popups, c'est-à-dire les casses à corriger avant d'appliquer la politique. Les access reports sont le signal de sécurité : ils révèlent les scripts cross-origin qui sondent votre fenêtre, exactement la fuite inter-fenêtres que COOP existe pour empêcher.

## Pièges [#pièges]

<Callout type="info">
  La forme exacte du body de premier niveau et la clé du marqueur de variante ne sont pas figées entre les sources. Capturez un report réel avant de documenter les noms de champs comme définitifs.
</Callout>

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

Les valeurs COOP de base sont standard et largement prises en charge, mais le reporting COOP est propre à Chromium : les reports sont livrés via le paramètre `report-to` du header, et Firefox et Safari ne les envoient pas. La valeur `restrict-properties` est également portée par Chromium.

## Voir aussi [#voir-aussi]

* [Cross-Origin-Opener-Policy (COOP)](/fr/docs/web-security/policies/cross-origin-opener-policy)
* [report coep](/fr/docs/web-security/reporting-api/reports/coep)
* [Monitoring COOP dans CentralCSP](/fr/docs/platform/monitoring/coop)
* [Header Reporting-Endpoints](/fr/docs/web-security/reporting-api/headers/reporting-endpoints)
* [Le format de livraison des rapports](/fr/docs/web-security/reporting-api/concepts/report-delivery-format)

## Sources [#sources]

* [MDN, Reporting API](https://developer.mozilla.org/en-US/docs/Web/API/Reporting_API)
* [COOP reporting explainer](https://github.com/camillelamy/explainers/blob/main/coop_reporting.md)
* [MDN, Cross-Origin-Opener-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Opener-Policy)
