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