203 Non-Authoritative Information
Penggunaan
Kode status 203 Non-Authoritative Information pertama-tama menegaskan bahwa permintaan berhasil. Kode status aslinya tidak dipertahankan. Klien tidak memiliki cara untuk menentukan apakah origin mengembalikan 200, 201, atau kode keberhasilan lainnya.
Catatan
Karena alasan inilah kode status 203 Non-Authoritative Information terkadang tidak dianjurkan. Header Warning dengan kode 214 (Transformation Applied), yang kini telah usang, dahulu berperan sebagai alternatif: menandakan terjadinya transformasi sekaligus mempertahankan kode status asli. Header Warning telah dihapus dari standar HTTP.
Contoh
Klien meminta sebuah sumber daya melalui server proxy perantara. Server origin menyimpan sumber daya tersebut sebagai teks biasa. Proxy mengubah sumber daya itu ke format JSON sebelum meneruskan responsnya ke klien.
Permintaan
GET /instructions HTTP/1.1
Host: example.com
Respons dari origin
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Content-Length: 250
<message body in text format>
Respons dari proxy ke klien
HTTP/1.1 203 Non-Authoritative Information
Content-Type: application/json
Content-Length: 265
{"response":"<message body embedded in JSON>"}
Pendekatan alternatif (lawas)
Telah usang
Header Warning telah diusangkan dan kini menjadi warisan lama. Pendekatan ini tidak direkomendasikan untuk implementasi baru.
Alih-alih menggunakan kode status 203 Non-Authoritative Information, proxy menambahkan header Warning dengan kode 214 (Transformation Applied), sehingga mempertahankan kode status asli.
Respons dari proxy menggunakan header 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>"}
Ketika header Warning dipakai menggantikan kode status 203 Non-Authoritative Information, kode status asli tetap dipertahankan dan klien menangani responsnya sesuai dengan itu.
Referensi kode
.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