HTTPQUERY
Русский

208 Already Reported

Применение

Когда клиент получает 208 Already Reported внутри тела ответа 207 multi-status, это означает, что ресурс уже был описан ранее в том же ответе. Для повторяющейся записи дополнительные сведения не приводятся.

Этот код состояния существует специально для WebDAV Binding Extensions. Ресурс, привязанный к нескольким местоположениям в пределах одной коллекции, появляется один раз полностью и один раз как 208 Already Reported, что прерывает потенциальную рекурсию, когда запрос с Depth: infinity встречает ресурс, ссылающийся сам на себя.

Только для WebDAV

Код состояния 208 Already Reported появляется исключительно внутри тел ответов 207 multi-status. Сервер никогда не отправляет 208 в качестве статуса HTTP-ответа верхнего уровня.

Пример

Клиент отправляет запрос PROPFIND с Depth: infinity, чтобы перечислить содержимое коллекции /main/. Ресурс /main/dependent привязан к тому же базовому ресурсу, что и сама /main/.

Сервер сначала возвращает полные сведения о /main/, а затем возвращает 208 Already Reported для /main/dependent, чтобы прервать рекурсивный цикл.

Запрос

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>

Ответ

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>

Примеры кода

.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