Memahami HTTP Response Status Code
|Postingan kali ini tentang catatan saya terkait dengan HTTP status code. Sering kita sadari atau tanpa disadari mendapatkan response saat mengakses web ataupun server. Htpp status code adalah kode numerik yang disertakan dalam respons HTTP yang diberikan oleh server web untuk memberikan informasi tentang hasil dari permintaan yang dilakukan oleh klien. Setiap status code memiliki arti khusus yang dapat membantu dalam memahami apakah permintaan berhasil, gagal, atau mengalami kondisi tertentu daris etiap response yang dihasilkan.
Menurut IANA ( Internet Assigned Numbers Authority ), HTTP status code memiliki kategori yang berbeda sebanyak 5 kategori. IANA sendiri adalah merupakan otoritas yang bertanggung jawab untuk menetapkan dan mengelola berbagai parameter di dalam protokol internet, termasuk status code HTTP. Namun, spesifikasi dan definisi dari status code HTTP sendiri terdapat dalam sejumlah dokumen RFC (Request for Comments) yang diterbitkan oleh Internet Engineering Task Force (IETF).
Berikut adalah 5 kategori untuk HTTP status code :
- 1xx (Informational): Digunakan untuk memberikan informasi tentang status permintaan dan menunjukkan bahwa server sedang menunggu klien untuk menyelesaikan permintaan.
- 2xx (Successful): Menunjukkan bahwa permintaan klien telah diterima, dimengerti, dan diterima dengan baik.
- 3xx (Redirection): Menunjukkan bahwa klien perlu melakukan tindakan tambahan untuk menyelesaikan permintaan.
- 4xx (Client Error): Menunjukkan bahwa klien telah melakukan sesuatu yang salah, seperti meminta halaman yang tidak ada atau memberikan data permintaan yang tidak valid.
- 5xx (Server Error): Menunjukkan bahwa server mengalami kesalahan saat mencoba memenuhi permintaan klien.
Penjelasan detail dan contoh kasusnya :
1XX
HTTP status code dengan kategori 1xx (Informational Responses) memberikan informasi tentang status permintaan dan menunjukkan bahwa server sedang menunggu klien untuk menyelesaikan permintaan. Berikut adalah contoh dan penjelasan untuk HTTP status code dalam kategori ini:
- 100 Continue:
Penjelasan: Server telah menerima header permintaan dari klien, dan klien sekarang dapat melanjutkan untuk mengirimkan body permintaan.
Contoh: Sebuah permintaan POST dikirim ke server, dan server merespons dengan status 100 Continue untuk memberi tahu klien bahwa server siap menerima body permintaan.
- 101 Switching Protocols:
Penjelasan: Server mengerti permintaan klien dan bersedia beralih protokol sesuai dengan header permintaan.
Contoh: Klien mengirimkan permintaan dengan header Upgrade
yang meminta beralih ke protokol yang berbeda, dan server merespons dengan status 101 Switching Protocols untuk menunjukkan persetujuan beralih protokol.
- 102 Processing:
Penjelasan: Server sedang memproses permintaan, tetapi respons belum selesai. Ini adalah respons sementara untuk memberikan informasi bahwa server belum selesai memproses.
Contoh: Server sedang memproses data yang diterima dari klien dan memerlukan waktu lebih lama untuk menyelesaikan tugasnya. Server mengirim status 102 Processing untuk memberi tahu klien bahwa prosesnya masih berlangsung.
- 103 Early Hints:
Penjelasan: Server mengirim informasi yang dapat digunakan oleh klien sebelum respons utama. Ini memberikan klien beberapa petunjuk sebelum respons utama dikirim.
Contoh: Sebelum mengirim respons utama, server dapat memberikan petunjuk terkait sumber daya atau tindakan yang mungkin diperlukan oleh klien.
2XX
HTTP status code dengan kategori 2xx (Successful Responses) menunjukkan bahwa permintaan klien telah diterima, dimengerti, dan berhasil diproses dengan baik oleh server. Berikut adalah contoh dan penjelasan untuk HTTP status code dalam kategori ini:
- 200 OK:
Penjelasan: Permintaan klien berhasil diproses oleh server.
Contoh: Klien mengirimkan permintaan GET untuk mengambil halaman web, dan server merespons dengan status 200 OK bersama dengan data halaman yang diminta.
- 201 Created:
Penjelasan: Permintaan klien telah berhasil menciptakan sumber daya baru di server.
Contoh: Sebuah permintaan POST untuk membuat entri baru dalam basis data berhasil, dan server merespons dengan status 201 Created bersama dengan informasi mengenai sumber daya yang baru dibuat.
- 202 Accepted:
Penjelasan: Permintaan klien diterima, tetapi server belum menyelesaikan pemrosesan permintaan.
Contoh: Klien mengirimkan permintaan yang memerlukan waktu pemrosesan yang lama, dan server merespons dengan status 202 Accepted untuk memberi tahu klien bahwa permintaan telah diterima dan sedang diproses.
- 204 No Content:
Penjelasan: Permintaan klien berhasil diproses, tetapi tidak ada konten yang dikembalikan dalam respons.
Contoh: Sebuah permintaan DELETE berhasil menghapus sumber daya, dan server merespons dengan status 204 No Content karena tidak ada data yang dikirimkan kembali.
- 205 Reset Content:
Penjelasan: Permintaan klien telah berhasil diproses, dan klien harus mereset tampilan yang sedang digunakan.
Contoh: Setelah mengirimkan formulir, server merespons dengan status 205 Reset Content untuk memberi tahu klien untuk mereset formulir atau tampilan yang digunakan.
- 206 Partial Content:
Penjelasan: Hanya sebagian dari permintaan klien yang berhasil diproses karena server mendukung pembagiannya.
Contoh: Klien meminta hanya sebagian dari file, dan server merespons dengan status 206 Partial Content bersama dengan bagian yang diminta dari file tersebut.
3XX
Berikut adalah beberapa HTTP status code dalam kategori 3xx (Redirection Messages) beserta penjelasan lebih lengkap:
- 300 Multiple Choices:
Penjelasan: Ada beberapa pilihan yang dapat dipilih oleh klien. Klien harus memilih salah satu opsi dan melakukan permintaan kembali.
Contoh: Klien mengirimkan permintaan untuk sumber daya yang dapat diakses melalui beberapa URI, dan server merespons dengan status 300 Multiple Choices bersama dengan daftar URI alternatif.
- 301 Moved Permanently:
Penjelasan: Sumber daya yang diminta telah dipindahkan secara permanen ke lokasi baru. Klien harus menggunakan URI baru yang disediakan.
Contoh: Sebuah situs web telah dipindahkan ke domain baru, dan server merespons dengan status 301 Moved Permanently bersama dengan URI baru.
- 302 Found (atau 302 Found/Temporary Redirect):
Penjelasan: Sumber daya yang diminta ditemukan di lokasi lain sementara waktu. Klien harus menggunakan URI baru untuk mengakses sumber daya, tetapi perubahan ini mungkin sementara.
Contoh: Situs web sedang mengalami perbaikan, dan server merespons dengan status 302 Found bersama dengan URI alternatif untuk sementara waktu.
- 303 See Other:
Penjelasan: Respons ini menunjukkan bahwa klien harus melakukan permintaan GET ke URI yang baru untuk mendapatkan respons.
Contoh: Setelah mengirim formulir, server merespons dengan status 303 See Other bersama dengan URI yang mengarah ke halaman hasil atau konfirmasi.
- 304 Not Modified:
Penjelasan: Sumber daya yang diminta tidak berubah sejak versi yang terakhir diambil atau dipertahankan oleh klien. Klien dapat menggunakan salinan lokalnya.
Contoh: Klien melakukan permintaan GET, dan server merespons dengan status 304 Not Modified karena sumber daya belum mengalami perubahan sejak permintaan sebelumnya.
- 307 Temporary Redirect:
Penjelasan: Mirip dengan 302 Found, tetapi klien diharapkan tetap menggunakan metode HTTP asli saat mengakses URI yang baru.
Contoh: Sumber daya yang diminta sementara tidak tersedia di lokasi yang biasa, dan server merespons dengan status 307 Temporary Redirect bersama dengan URI sementara.
- 308 Permanent Redirect:
Penjelasan: Mirip dengan 301 Moved Permanently, tetapi klien diharapkan tetap menggunakan metode HTTP asli saat mengakses URI yang baru.
Contoh: Sumber daya yang diminta telah dipindahkan secara permanen, dan server merespons dengan status 308 Permanent Redirect bersama dengan URI baru yang harus digunakan oleh klien.
4XX
Berikut adalah beberapa HTTP status code dalam kategori 4xx (Client Error Responses) beserta penjelasan lebih lengkap:
- 400 Bad Request:
Penjelasan: Server tidak dapat memproses permintaan karena permintaan klien memiliki sintaks yang tidak valid atau tidak dapat dipahami.
Contoh: Klien mengirimkan permintaan dengan parameter yang tidak sesuai atau tidak lengkap, dan server merespons dengan status 400 Bad Request.
- 401 Unauthorized:
Penjelasan: Klien harus memberikan kredensial valid untuk mengakses sumber daya yang diminta, tetapi tidak memberikan atau kredensial yang diberikan tidak valid.
Contoh: Pengguna mencoba mengakses halaman yang memerlukan otentikasi, tetapi tidak memberikan informasi login yang benar.
- 402 Payment Required:
Penjelasan: Dalam konteks HTTP, status ini tidak umum digunakan. Ini dimaksudkan untuk penggunaan di masa depan atau dalam kerangka kerja pembayaran elektronik.
Contoh: Tidak ada contoh umum yang dikenal karena status ini jarang digunakan.
- 403 Forbidden:
Penjelasan: Server memahami permintaan klien, tetapi menolak untuk memenuhinya. Klien tidak diizinkan mengakses sumber daya yang diminta.
Contoh: Klien mencoba mengakses direktori yang dilindungi kata sandi tanpa memberikan kredensial yang sesuai.
- 404 Not Found:
Penjelasan: Sumber daya yang diminta tidak dapat ditemukan di server.
Contoh: Klien mencoba mengakses URL yang tidak ada atau telah dihapus, dan server merespons dengan status 404 Not Found.
- 405 Method Not Allowed:
Penjelasan: Metode HTTP yang digunakan dalam permintaan tidak diizinkan untuk sumber daya yang diminta.
Contoh: Klien mengirimkan permintaan POST ke sumber daya yang hanya mendukung metode GET, dan server merespons dengan status 405 Method Not Allowed.
- 406 Not Acceptable:
Penjelasan: Server tidak dapat menghasilkan respons yang dapat diterima sesuai dengan header Accept yang diberikan oleh klien.
Contoh: Klien meminta respons dalam format yang tidak didukung oleh server, dan server merespons dengan status 406 Not Acceptable.
- 407 Proxy Authentication Required:
Penjelasan: Kredensial otentikasi diperlukan untuk mengakses sumber daya melalui proxy.
Contoh: Klien mencoba mengakses sumber daya melalui proxy tanpa memberikan kredensial otentikasi, dan server merespons dengan status 407 Proxy Authentication Required.
- 408 Request Timeout:
Penjelasan: Waktu yang diberikan untuk server untuk memproses permintaan telah habis sebelum permintaan dapat selesai diproses.
Contoh: Klien mengirimkan permintaan yang memerlukan waktu pemrosesan lama, dan server merespons dengan status 408 Request Timeout.
- 409 Conflict:
Penjelasan: Permintaan tidak dapat diproses karena konflik dengan status saat ini dari sumber daya yang diminta.
Contoh: Klien mencoba membuat sumber daya yang sudah ada, dan server merespons dengan status 409 Conflict.
- 410 Gone:
Penjelasan: Sumber daya yang diminta tidak lagi tersedia di server dan tidak akan kembali lagi.
Contoh: Klien mencoba mengakses halaman web yang telah dihapus, dan server merespons dengan status 410 Gone.
- 411 Length Required:
Penjelasan: Server membutuhkan header Content-Length dalam setiap permintaan yang memiliki body, dan permintaan klien tidak menyertakan header tersebut.
Contoh: Klien mengirimkan permintaan POST tanpa menyertakan header Content-Length, dan server merespons dengan status 411 Length Required.
- 412 Precondition Failed:
Penjelasan: Salah satu kondisi pra-syarat yang diberikan dalam permintaan tidak terpenuhi.
Contoh: Klien mengirimkan permintaan dengan header If-Match atau If-None-Match yang tidak sesuai dengan status saat ini dari sumber daya, dan server merespons dengan status 412 Precondition Failed.
- 413 Payload Too Large:
Penjelasan: Server menolak permintaan karena ukuran body permintaan melebihi batas yang ditentukan oleh server.
Contoh: Klien mengirimkan file yang terlalu besar melalui metode POST, dan server merespons dengan status 413 Payload Too Large.
- 414 URI Too Long:
Penjelasan: URI (Uniform Resource Identifier) yang diminta oleh klien terlalu panjang dan melebihi batas yang dapat diproses oleh server.
Contoh: Klien mengirimkan permintaan dengan URL yang sangat panjang, dan server merespons dengan status 414 URI Too Long.
- 415 Unsupported Media Type:
Penjelasan: Tipe media yang diberikan dalam header Content-Type dari permintaan tidak didukung oleh server.
Contoh: Klien mengirimkan data dalam format yang tidak didukung oleh server, dan server merespons dengan status 415 Unsupported Media Type.
- 416 Range Not Satisfiable:
Penjelasan: Server tidak dapat memenuhi permintaan Range yang diberikan oleh klien.
Contoh: Klien meminta hanya sebagian dari file, tetapi rentang yang diminta tidak dapat dipenuhi oleh server, dan server merespons dengan status 416 Range Not Satisfiable.
- 417 Expectation Failed:
Penjelasan: Server tidak dapat memenuhi harapan yang disertakan dalam header Expect permintaan.
Contoh: Klien menyertakan header Expect dengan nilai yang tidak dapat dipenuhi oleh server, dan server merespons dengan status 417 Expectation Failed.
- 418 I’m a teapot:
Penjelasan: Ini adalah status kocak dan tidak memiliki penggunaan praktis. Terkait dengan April Fools’ Day dan bercanda teknis.
Contoh: Sebuah bercanda atau lelucon yang dikirimkan oleh server untuk memberi tahu klien bahwa server adalah “teapot” dan tidak dapat memproses kopi.
- 421 Misdirected Request:
Penjelasan: Permintaan tidak dapat diproses oleh server yang menerima permintaan. Klien seharusnya mengulangi permintaan ke server yang tepat.
Contoh: Klien mengirimkan permintaan ke server yang tidak dapat memproses permintaan tersebut, dan server merespons dengan status 421 Misdirected Request.
- 422 Unprocessable Entity:
Penjelasan: Permintaan klien benar-benar valid, tetapi server tidak dapat memprosesnya karena semantik yang tidak valid.
Contoh: Klien mengirimkan data JSON yang tidak dapat diproses dengan benar oleh server, dan server merespons dengan status 422 Unprocessable Entity.
- 423 Locked:
Penjelasan: Sumber daya yang diminta terkunci dan tidak dapat diakses. Permintaan klien dapat diulangi setelah kondisi terkunci dihilangkan.
Contoh: Klien mencoba mengakses sumber daya yang sedang diakses oleh proses lain, dan server merespons dengan status 423 Locked.
- 424 Failed Dependency:
Penjelasan: Permintaan gagal karena permintaan sebelumnya gagal atau sumber daya yang diminta bergantung pada sumber daya yang gagal.
Contoh: Klien mengirimkan permintaan untuk membuat entri baru dalam basis data, tetapi entri yang diperlukan sebelumnya tidak ada atau tidak valid, dan server merespons dengan status 424 Failed Dependency.
- 425 Too Early:
Penjelasan: Server tidak dapat memproses permintaan karena klien terlalu cepat mengirimnya sebelum keadaan yang diperlukan terpenuhi.
Contoh: Klien mencoba mengakses sumber daya sebelum keadaan tertentu terjadi, dan server merespons dengan status 425 Too Early.
- 426 Upgrade Required:
Penjelasan: Klien harus beralih ke protokol yang lebih tinggi untuk mengakses sumber daya yang diminta.
Contoh: Klien menggunakan protokol HTTP yang tidak didukung oleh server, dan server merespons dengan status 426 Upgrade Required untuk meminta klien beralih ke protokol yang didukung.
- 428 Precondition Required:
Penjelasan: Server memerlukan klien untuk menyertakan header kondisi pra-syarat dalam permintaan.
Contoh: Klien mencoba melakukan pembaruan, dan server merespons dengan status 428 Precondition Required untuk meminta klien menyertakan kondisi pra-syarat yang benar.
- 429 Too Many Requests:
Penjelasan: Klien telah mengirimkan terlalu banyak permintaan dalam periode waktu yang singkat, dan server membatasi jumlah permintaan yang diterima dari klien.
Contoh: Klien mengirimkan terlalu banyak permintaan ke API dalam waktu singkat, dan server merespons dengan status 429 Too Many Requests.
- 431 Request Header Fields Too Large:
Penjelasan: Server menolak permintaan karena header permintaan terlalu besar.
Contoh: Klien mengirimkan permintaan dengan header yang terlalu besar, dan server merespons dengan status 431 Request Header Fields Too Large.
- 451 Unavailable For Legal Reasons:
Penjelasan: Sumber daya tidak tersedia karena alasan hukum.
Contoh: Klien mencoba mengakses sumber daya yang telah dihapus atau diblokir karena pelanggaran hukum, dan server merespons dengan status 451 Unavailable For Legal Reasons.
5XX
Berikut adalah beberapa HTTP status code dalam kategori 5xx (Server Error Responses) beserta penjelasan lebih lengkap:
- 500 Internal Server Error:
Penjelasan: Server mengalami kesalahan internal yang tidak dapat dijelaskan secara lebih spesifik. Ini adalah respons umum untuk kesalahan server yang tidak terduga.
Contoh: Ada bug di dalam server yang menyebabkan pemrosesan permintaan tidak berhasil, dan server merespons dengan status 500 Internal Server Error.
- 501 Not Implemented:
Penjelasan: Server tidak mendukung fungsionalitas yang diminta oleh permintaan.
Contoh: Klien mengirimkan metode HTTP yang tidak didukung oleh server, dan server merespons dengan status 501 Not Implemented.
- 502 Bad Gateway:
Penjelasan: Server bertindak sebagai gateway atau proxy dan menerima respons yang tidak valid dari server upstream.
Contoh: Proxy server mencoba menghubungi server upstream untuk mendapatkan respons, tetapi respons yang diterima tidak valid, dan server merespons dengan status 502 Bad Gateway.
- 503 Service Unavailable:
Penjelasan: Server tidak dapat memberikan respons karena sedang tidak tersedia atau mengalami penanganan lalu lintas yang berlebihan.
Contoh: Server sementara tidak dapat melayani permintaan karena pemeliharaan atau beban lalu lintas yang tinggi, dan server merespons dengan status 503 Service Unavailable.
- 504 Gateway Timeout:
Penjelasan: Server bertindak sebagai gateway atau proxy, dan respons yang diharapkan dari server upstream tidak diterima dalam waktu yang wajar.
Contoh: Proxy server mencoba menghubungi server upstream, tetapi tidak menerima respons dalam batas waktu yang diizinkan, dan server merespons dengan status 504 Gateway Timeout.
- 505 HTTP Version Not Supported:
Penjelasan: Server tidak mendukung versi HTTP yang digunakan dalam permintaan.
Contoh: Klien mengirimkan permintaan dengan versi protokol HTTP yang tidak didukung oleh server, dan server merespons dengan status 505 HTTP Version Not Supported.
- 506 Variant Also Negotiates:
Penjelasan: Server membutuhkan penegosiasian lebih lanjut untuk sumber daya yang dapat diakses oleh klien.
Contoh: Server menyadari bahwa ada beberapa representasi yang dapat diterima oleh klien, dan penegosiasian lebih lanjut diperlukan, dan server merespons dengan status 506 Variant Also Negotiates.
- 507 Insufficient Storage:
Penjelasan: Server tidak dapat membuat atau memodifikasi sumber daya karena kehabisan ruang penyimpanan.
Contoh: Server mencoba menyimpan file yang diunggah tetapi kehabisan ruang penyimpanan, dan server merespons dengan status 507 Insufficient Storage.
- 508 Loop Detected:
Penjelasan: Server mendeteksi loop atau perulangan tak terbatas saat memproses permintaan.
Contoh: Terjadi pemetaan ulang berulang pada sumber daya, dan server merespons dengan status 508 Loop Detected.
- 510 Not Extended:
Penjelasan: Perluasan lebih lanjut diperlukan untuk memproses permintaan, tetapi klien tidak menyertakan ekstensi yang diperlukan.
Contoh: Klien tidak menyertakan ekstensi yang diperlukan dalam header permintaan, dan server merespons dengan status 510 Not Extended.
- 511 Network Authentication Required:
Penjelasan: Server memerlukan otentikasi jaringan untuk mendapatkan akses ke sumber daya.
Contoh: Server memerlukan otentikasi jaringan, dan klien harus memberikan kredensial yang valid untuk mendapatkan akses, dan server merespons dengan status 511 Network Authentication Required.