208 Already Reported
Uso
Cuando un cliente recibe 208 Already Reported dentro de un cuerpo 207 multi-status, el recurso ya se describió antes en esa misma respuesta. No se aportan detalles adicionales para la entrada duplicada.
Este código de estado existe específicamente para las WebDAV Binding Extensions. Un recurso vinculado a varias ubicaciones dentro de la misma colección aparece una vez de forma completa y otra vez como 208 Already Reported, lo que rompe la posible recursión cuando una solicitud con Depth: infinity encuentra un recurso que se referencia a sí mismo.
Solo WebDAV
El código de estado 208 Already Reported aparece exclusivamente dentro de los cuerpos de respuesta 207 multi-status. Un servidor nunca envía un 208 como estado HTTP de respuesta de nivel superior.
Ejemplo
El cliente envía una solicitud PROPFIND con Depth: infinity para enumerar la colección /main/. El recurso /main/dependent está vinculado al mismo recurso subyacente que /main/.
El servidor devuelve primero los detalles completos de /main/ y después devuelve 208 Already Reported para /main/dependent, con el fin de romper el bucle recursivo.
Solicitud
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>
Respuesta
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>
Referencias de código
.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