# Violation Document-Policy (/fr/docs/web-security/reporting-api/reports/document-policy-violation)



Un report `document-policy-violation` vous indique que la page a fait quelque chose
qu'une contrainte de [Document-Policy](/fr/docs/web-security/policies/document-policy) interdit, par exemple appeler `document.write` ou charger
une image surdimensionnée quand ces usages sont restreints. Il nomme le point de
configuration qui a été enfreint et où cela s'est produit.

<Callout type="warn" title="Expérimental">
  Document-Policy est un brouillon WICG, pas un standard W3C, et est porté par Chromium. L'ensemble des points de configuration et le `body` du report ne sont pas stables.
</Callout>

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

Quand la page enfreint un point de configuration que la document policy contraint.
Exécutez `Document-Policy-Report-Only` pour voir les violations sans appliquer le blocage,
utile parce que l'ensemble des points de configuration dépend de l'implémentation et que
vous voulez confirmer ce qui se déclenche réellement avant de bloquer.

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

```json
{
  "type": "document-policy-violation",
  "age": 420,
  "url": "https://example.com/",
  "user_agent": "Mozilla/5.0 ...",
  "body": {
    "policyId": "document-write",
    "disposition": "enforce",
    "message": "Document policy violation: document-write is not allowed.",
    "sourceFile": "https://example.com/script.js",
    "lineNumber": 11,
    "columnNumber": 12
  }
}
```

Chaque body de report `document-policy-violation` 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                                                               |
| ----------------------------- | --------------------------------------------------------------------------- |
| `policyId`                    | Le point de configuration qui a été enfreint, par exemple `document-write`. |
| `disposition`                 | `enforce`, ou `report` en mode Report-Only.                                 |
| `message`                     | Une description lisible par un humain de la violation.                      |
| `sourceFile`                  | Le fichier qui l'a déclenché.                                               |
| `lineNumber` / `columnNumber` | L'emplacement dans ce fichier.                                              |

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

Ajoutez un paramètre `report-to` au header `Document-Policy` (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 document-policy](/fr/docs/platform/monitoring/document-policy).

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

Les contraintes les plus utiles réduisent de vrais dangers : bloquer `document.write`
ferme un risque d'injection de script et de performance, par exemple. Un report de
violation vous pointe directement vers le code legacy qui dépend encore du comportement
que vous voulez retirer.

## Pièges [#pièges]

<Callout type="info">
  Le report posté nomme le champ `policyId`. L'interface ReportingObserver côté navigateur expose la même valeur sous `featureId`, donc parsez les reports reçus sur `policyId` et ne lisez `featureId` que dans le code côté navigateur.
</Callout>

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

Navigateurs basés sur Chromium uniquement ; expérimental, et il n'existe pas de registre
normatif des points de configuration, donc les contraintes disponibles dépendent de
l'implémentation.

## Voir aussi [#voir-aussi]

* [Document-Policy](/fr/docs/web-security/policies/document-policy)
* [Document-Policy expliqué (guide)](/fr/blog/document-policy-explained)
* [report crash](/fr/docs/web-security/reporting-api/reports/crash)
* [Monitoring Document-Policy dans CentralCSP](/fr/docs/platform/monitoring/document-policy)
* [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]

* [WICG, Document Policy](https://wicg.github.io/document-policy/)
* [MDN, Reporting API](https://developer.mozilla.org/en-US/docs/Web/API/Reporting_API)
