208 Already Reported
When a resource has already been listed earlier in the same 207 response, the server marks the duplicate entry with 208 Already Reported. This prevents redundant data and infinite loops caused by resources with multiple bindings.
Usage
When a client receives 208 Already Reported inside a 207 multi-status body, the resource was already described earlier in the same response. No additional details are provided for the duplicate entry.
This status code exists specifically for WebDAV
Binding Extensions. A resource bound to
multiple locations within the same collection appears
once in full and once as 208 Already Reported,
breaking potential recursion when a Depth: infinity
request encounters a resource referencing itself.
WebDAV Only
The 208 Already Reported status code appears exclusively inside 207 multi-status response bodies. A server never sends 208 as a top-level HTTP response status.
Example
The client sends a PROPFIND request with
Depth: infinity to enumerate the /main/
collection. The /main/dependent resource is bound
to the same underlying resource as /main/ itself.
The server returns the full details for /main/
first, then returns 208 Already Reported for
/main/dependent to break the recursive loop.
Request
PROPFIND /main/ HTTP/1.1
Host: www.example.re
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>
Response
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 references
.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
See also
- RFC 5842: Binding Extensions to Web Distributed Authoring and Versioning (WebDAV)
- 207
- 508
- HTTP status codes