CSP: report-uri
===============

**Obsolète:** Cette fonctionnalité a été supprimée des standards du Web. Bien que quelques navigateurs puissent encore la supporter, elle est en cours d'éradication. Ne l'utilisez ni dans d'anciens projets, ni dans de nouveaux. Les pages et applications Web l'utilisant peuvent cesser de fonctionner à tout moment.

La directive HTTP `Content-Security-Policy` (CSP) **`report-uri`** demande à l'agent utilisateur de rapporter les violations de règles CSP. Ces rapports de violation sont constituées d'un document JSON envoyé via une requête HTTP POST à l'URI fournie.

**Attention :** Bien que la directive `report-to` est prévue remplacer la directive **`report-uri`** maintenant dépréciée, `report-to` n'est pas encore supportée par la plupart des navigateurs modernes. Par rétrocompatibilité avec les navigateurs courants et tout en prévoyant une compatibilité future quand les navigateurs supporteront `report-to`, vous pouvez spécifier les deux directives **`report-uri`** et `report-to`:
```

Content-Security-Policy: ...; report-uri https://endpoint.com; report-to groupname
```


Dans les navigateurs qui supportent `report-to`, la directive **`report-uri`** sera ignorée.

Cette directive n'a aucun effet en elle-même, mais prend tout son sens en étant combinée à d'autres directives.

|  |  |
| --- | --- |
| Version de CSP | 1 |
| Type de directive | Reporting directive |
| 
 Cette directive n'est pas supportée dans l'élément
 `<meta>`.
  |

Syntaxe
-------
```

Content-Security-Policy: report-uri <uri>;
Content-Security-Policy: report-uri <uri> <uri>;
```


<uri>

Une URI où envoyer la requête POST contenant le rapport de violation.

Exemples
--------

Voir `Content-Security-Policy-Report-Only` pour plus d'informations et d'exemples.
```

Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/
```


`/csp-violation-report-endpoint/` pourrait par exemple exécuter un script PHP similaire au suivant qui journaliserait le JSON détaillant la violation et, si elle est la première ajoutée au journal, enverrait un courril à l'administrateur :


```php
<?php

// Start configure
$log\_file = dirname(\_\_FILE\_\_) . '/csp-violations.log';
$log\_file\_size\_limit = 1000000; // bytes - once exceeded no further entries are added
$email\_address = 'admin@example.com';
$email\_subject = 'Content-Security-Policy violation';
// End configuration

$current\_domain = preg\_replace('/www\./i', '', $\_SERVER['SERVER\_NAME']);
$email\_subject = $email\_subject . ' on ' . $current\_domain;

http\_response\_code(204); // HTTP 204 No Content

$json\_data = file\_get\_contents('php://input');

// We pretty print the JSON before adding it to the log file
if ($json\_data = json\_decode($json\_data)) {
 $json\_data = json\_encode($json\_data, JSON\_PRETTY\_PRINT | JSON\_UNESCAPED\_SLASHES);

 if (!file\_exists($log\_file)) {
 // Send an email
 $message = "The following Content-Security-Policy violation occurred on " .
 $current\_domain . ":\n\n" .
 $json\_data .
 "\n\nFurther CPS violations will be logged to the following log file, but no further email notifications will be sent until this log file is deleted:\n\n" .
 $log\_file;
 mail($email\_address, $email\_subject, $message,
 'Content-Type: text/plain;charset=utf-8');
 } else if (filesize($log\_file) > $log\_file\_size\_limit) {
 exit(0);
 }

 file\_put\_contents($log\_file, $json\_data, FILE\_APPEND | LOCK\_EX);
}
```

Spécifications
--------------

| Specification |
| --- |
| Content Security Policy Level 3 # directive-report-uri |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Content-Security-Policy`
* `Content-Security-Policy-Report-Only`