208 Already Reported
Verwendung
Erhält ein Client innerhalb eines 207-Multi-Status-Bodys ein 208 Already Reported, wurde die Ressource bereits weiter oben in derselben Antwort beschrieben. Für den doppelten Eintrag werden keine zusätzlichen Details geliefert.
Dieser Statuscode existiert eigens für die WebDAV Binding Extensions. Eine Ressource, die an mehrere Orte innerhalb derselben Sammlung gebunden ist, erscheint einmal vollständig und einmal als 208 Already Reported. Das durchbricht eine mögliche Rekursion, wenn eine Anfrage mit Depth: infinity auf eine Ressource trifft, die sich selbst referenziert.
Nur WebDAV
Der Statuscode 208 Already Reported erscheint ausschließlich innerhalb von 207-Multi-Status-Antwortbodys. Ein Server sendet 208 niemals als HTTP-Antwortstatus auf oberster Ebene.
Beispiel
Der Client sendet eine PROPFIND-Anfrage mit Depth: infinity, um die Sammlung /main/ aufzuzählen. Die Ressource /main/dependent ist an dieselbe zugrunde liegende Ressource gebunden wie /main/ selbst.
Der Server gibt zunächst die vollständigen Details für /main/ zurück und anschließend für /main/dependent ein 208 Already Reported, um die rekursive Schleife zu durchbrechen.
Anfrage
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>
Antwort
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>
Code-Referenzen
.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