208 Already Reported
Utilisation
Lorsqu’un client reçoit un 208 Already Reported à l’intérieur d’un corps 207 multi-status, c’est que la ressource a déjà été décrite plus haut dans la même réponse. Aucun détail supplémentaire n’est fourni pour l’entrée dupliquée.
Ce code de statut existe spécifiquement pour les WebDAV Binding Extensions. Une ressource liée à plusieurs emplacements au sein de la même collection apparaît une fois en intégralité et une fois sous la forme d’un 208 Already Reported, ce qui rompt la récursion potentielle lorsqu’une requête Depth: infinity rencontre une ressource qui se référence elle-même.
WebDAV uniquement
Le code de statut 208 Already Reported apparaît exclusivement à l’intérieur des corps de réponse 207 multi-status. Un serveur n’envoie jamais un 208 comme statut HTTP de réponse de premier niveau.
Exemple
Le client envoie une requête PROPFIND avec Depth: infinity afin d’énumérer la collection /main/. La ressource /main/dependent est liée à la même ressource sous-jacente que /main/ elle-même.
Le serveur renvoie d’abord les détails complets de /main/, puis renvoie 208 Already Reported pour /main/dependent afin de rompre la boucle récursive.
Requête
PROPFIND /main/ HTTP/1.1
Host: example.com
Depth: infinity
DAV: bind
Content-Type: application/xml; charset="utf-8"
Content-Length: 139
<?xml version="1.0" encoding="utf-8" ?>
<d:propfind xmlns:d="DAV:">
<d:prop>
<d:name/>
<d:link/>
</d:prop>
</d:propfind>
Réponse
HTTP/1.1 207 Multi-Status
Content-Type: application/xml; charset="utf-8"
Content-Length: 568
<?xml version="1.0" encoding="utf-8" ?>
<d:multistatus xmlns:d="DAV:">
<d:response>
<d:href>http://example.re/main/</d:href>
<d:propstat>
<d:prop>
<d:name>Main Resource</d:name>
<d:resource-id>
<href>urn:uuid:1234-0000</href>
</d:resource-id>
</d:prop>
<d:status>HTTP/1.1 200 OK</d:status>
</d:propstat>
</d:response>
<d:response>
<d:href>
http://example.re/main/dependent
</d:href>
<d:propstat>
<d:prop>
<d:name>Main Resource</d:name>
<d:resource-id>
<href>urn:uuid:1234-0000</href>
</d:resource-id>
</d:prop>
<d:status>
HTTP/1.1 208 Already Reported
</d:status>
</d:propstat>
</d:response>
</d:multistatus>
Références de code
.NET
HttpStatusCode.AlreadyReported
Rust
http::StatusCode::ALREADY_REPORTED
Rails
:already_reported
Go
http.StatusAlreadyReported
Symfony
Response::HTTP_ALREADY_REPORTED
Python3.5+
http.HTTPStatus.ALREADY_REPORTED
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_ALREADY_REPORTED
Angular
@angular/common/http/HttpStatusCode.AlreadyReported