HTTPQUERY
Русский

203 Non-Authoritative Information

Применение

Код состояния 203 Non-Authoritative Information прежде всего подтверждает, что запрос выполнен успешно. Исходный код состояния не сохраняется. У клиента нет способа определить, вернул ли источник 200, 201 или другой код успеха.

Примечание

Именно поэтому код состояния 203 Non-Authoritative Information иногда не рекомендуют к использованию. Ныне упразднённый заголовок Warning с кодом 214 (Transformation Applied) когда-то служил альтернативой, сигнализируя о преобразовании и сохраняя при этом исходный код состояния. Заголовок Warning был удалён из стандарта HTTP.

Пример

Клиент запрашивает ресурс через промежуточный прокси-сервер. Сервер-источник хранит ресурс в виде обычного текста. Прокси преобразует ресурс в формат JSON, прежде чем переслать ответ клиенту.

Запрос

GET /instructions HTTP/1.1
Host: example.com

Ответ от источника

HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Content-Length: 250

<message body in text format>

Ответ прокси клиенту

HTTP/1.1 203 Non-Authoritative Information
Content-Type: application/json
Content-Length: 265

{"response":"<message body embedded in JSON>"}

Альтернативный подход (устаревший)

Упразднено

Заголовок Warning был упразднён и теперь относится к устаревшим средствам. Этот подход не рекомендуется для новых реализаций.

Вместо использования кода состояния 203 Non-Authoritative Information прокси добавляет заголовок Warning с кодом 214 (Transformation Applied), сохраняя исходный код состояния.

Ответ прокси с использованием заголовка Warning

HTTP/1.1 200 OK
Content-Type: application/json
Warning: 214 proxy.example.re "Response converted to JSON format"
Content-Length: 265

{"response":"<message body embedded in JSON>"}

При использовании заголовка Warning вместо кода состояния 203 Non-Authoritative Information исходный код состояния сохраняется, и клиент обрабатывает ответ соответствующим образом.

Примеры кода

.NET

HttpStatusCode.NonAuthoritativeInformation

Rust

http::StatusCode::NON_AUTHORITATIVE_INFORMATION

Rails

:non_authoritative_information

Go

http.StatusNonAuthoritativeInfo

Symfony

Response::HTTP_NON_AUTHORITATIVE_INFORMATION

Python3.5+

http.HTTPStatus.NON_AUTHORITATIVE_INFORMATION

Java

java.net.HttpURLConnection.HTTP_NOT_AUTHORITATIVE

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_NON_AUTHORITATIVE_INFORMATION

Angular

@angular/common/http/HttpStatusCode.NonAuthoritativeInformation