303 See Other
Penggunaan
Kode status 303 See Other umumnya dikembalikan setelah permintaan POST, PUT, atau DELETE. Hasil operasi tersebut dapat dilihat pada URL yang berbeda, dan klien mengambil sumber daya baru itu dengan permintaan GET ke Location yang ditentukan.
Catatan
Secara historis banyak server mengirim 302 padahal yang dimaksud adalah 303, dan banyak klien memperlakukan 302 sebagai 303 dengan mengubah metode permintaan menjadi GET.
Dampak SEO
Google mengklasifikasikan 303 sebagai redirect sementara, bersama 302 dan 307. Googlebot mengikuti redirect tersebut tetapi memperlakukan 303 sebagai sinyal lemah bahwa target itu adalah URL yang dipilih.
Contoh
Klien meminta penghapusan sebuah sumber daya tertentu. Server mengirim 303 See Other karena lokasi aslinya tidak lagi memuat sumber daya yang dapat dilihat, dan menunjuk ke halaman konfirmasi pada Location yang baru.
Permintaan
DELETE /tasks/314 HTTP/1.1
Host: example.com
Respons
HTTP/1.1 303 See Other
Location: http://example.com/confirmation/delete.html
303 vs 307
Baik 303 maupun 307 merupakan redirect sementara, tetapi penanganan metodenya berbeda. Respons 303 mengubah metode permintaan menjadi GET (atau HEAD), terlepas dari metode aslinya. Respons 307 mempertahankan metode dan body yang asli. Gunakan 303 setelah POST ketika klien perlu mengambil halaman hasil. Gunakan 307 ketika permintaan yang persis sama harus diulang di lokasi yang baru.
Referensi kode
.NET
HttpStatusCode.SeeOther
Rust
http::StatusCode::SEE_OTHER
Rails
:see_other
Go
http.StatusSeeOther
Symfony
Response::HTTP_SEE_OTHER
Python3.5+
http.HTTPStatus.SEE_OTHER
Java
java.net.HttpURLConnection.HTTP_SEE_OTHER
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_SEE_OTHER
Angular
@angular/common/http/HttpStatusCode.SeeOther