Setiap kali kamu membuka sebuah halaman web, mengklik tautan, atau mengirim formulir, di balik layar browser-mu sebenarnya sedang “ngobrol” singkat dengan server. Browser meminta sesuatu, lalu server menjawab. Di dalam jawaban itu selalu terselip sebuah angka tiga digit bernama HTTP status code. Kamu jarang melihatnya, tapi angka itu hadir di setiap permintaan — memberi tahu browser apakah semuanya lancar, ada yang gagal, atau perlu penanganan khusus.
Begitu kamu bisa membaca angka-angka ini, banyak situasi yang tadinya membingungkan jadi masuk akal. Halaman “404” yang sering kamu temui itu? Itu status code. Situs yang bilang “Service Unavailable”? Status code juga. Setelah membaca artikel ini, kamu akan bisa melihat angka mana pun dan langsung paham kira-kira apa yang terjadi, siapa yang bermasalah, dan apa yang sebaiknya kamu lakukan.
Apa itu status code sebenarnya
Saat browser mengirim permintaan ke server, pada dasarnya ia sedang bertanya: “Boleh saya minta halaman ini?” atau “Ini ada formulir yang saya kirim, tolong simpan.” Server wajib menjawab, dan hal pertama dalam jawabannya adalah status code.
Status code adalah angka tiga digit, misalnya 200 atau 404. Angka ini ringkasan cepat dari server tentang bagaimana hasil permintaan tadi, dikemas dalam bentuk yang bisa langsung dibaca oleh perangkat lunak. Di sebelahnya biasanya ada label teks singkat (disebut reason phrase), seperti “OK” atau “Not Found”, tapi yang paling penting tetap angkanya.
Begini gambaran umum percakapannya:
KAMU (browser) SERVER
-------------- ------
GET /tentang-kami ───────────▶
(mencari halaman)
◀─────────── 200 OK
(browser menampilkan halaman)
Bagian paling enaknya: setiap status code pasti masuk ke salah satu dari lima kelompok, dan digit pertama langsung menunjukkan kelompoknya. Hafal lima kelompok ini, dan kamu sudah menguasai 90% dari yang perlu kamu tahu.
Digit pertama adalah petunjuk utama
Kamu tidak perlu menghafal ratusan kode. Digit pertamanya sudah membocorkan kategorinya: 1 = info, 2 = sukses, 3 = pengalihan, 4 = sisi kamu yang salah, 5 = sisi server yang rusak. Sisanya cuma detail.
Lima kelas secara sekilas
| Kelas | Rentang | Arti dalam bahasa sederhana |
|---|---|---|
| 1xx | 100–199 | Informasi — “Diterima, lanjutkan.” |
| 2xx | 200–299 | Sukses — “Beres, ini hasilnya.” |
| 3xx | 300–399 | Pengalihan — “Yang kamu cari ada di tempat lain.” |
| 4xx | 400–499 | Kesalahan klien — “Permintaanmu yang bermasalah.” |
| 5xx | 500–599 | Kesalahan server — “Saya, server-nya, yang rusak.” |
Mari kita bahas tiap kelas beserta kode yang paling sering kamu temui.
1xx — Informasi
Kode 1xx adalah yang paling jarang disadari pemula. Sifatnya pesan sementara: server sedang memberi tahu browser “permintaanmu sudah saya terima dan masih saya proses — tunggu sebentar.” Ini bukan tanda bahwa permintaan sudah selesai, melainkan sekadar catatan perkembangan.
Kamu hampir tidak pernah berurusan langsung dengan kode ini. Mereka dipakai pada situasi teknis tertentu, misalnya saat mengganti koneksi HTTP biasa menjadi koneksi WebSocket yang berjalan real-time. Untuk aktivitas browsing sehari-hari, anggap saja 1xx sebagai “obrolan latar antar-mesin” lalu lanjut.
2xx — Sukses
Inilah kelompok yang menyenangkan. Semua kode yang diawali angka 2 berarti permintaan berhasil. Tiga di antaranya sangat sering muncul.
| Kode | Nama | Kapan kamu menemuinya |
|---|---|---|
| 200 | OK | Jawaban standar “semua berhasil”. Memuat halaman biasa menghasilkan 200. |
| 201 | Created | Sesuatu yang baru berhasil disimpan di server. |
| 204 | No Content | Berhasil, tapi tidak ada yang perlu dikirim balik. |
200 OK adalah yang paling sering kamu jumpai. Buka halaman web mana pun yang berfungsi normal, dan di balik layar server mengembalikan 200. Maknanya sederhana: “ini persis seperti yang kamu minta.”
201 Created muncul setelah kamu membuat sesuatu yang baru. Bayangkan John Doe mendaftar akun atau menulis komentar. Server menyimpan data baru itu lalu menjawab 201 untuk menegaskan bahwa kini ada satu hal baru yang resmi tersimpan.
204 No Content adalah sukses yang “diam”. Permintaan berjalan sempurna, tapi server tidak punya apa pun untuk dikirim balik di badan jawaban. Contoh umum: kamu mengklik tombol “suka”, server mencatatnya, lalu menjawab 204 — berhasil, tanpa perlu menampilkan apa-apa lagi.
POST /komentar ───────────▶ (server menyimpan komentar)
◀─────────── 201 Created
3xx — Pengalihan
Kode 3xx berarti “yang kamu minta tidak ada di sini — silakan lihat ke tempat lain.” Server sedang mengarahkan browser ke alamat yang berbeda, dan biasanya browser langsung mengikutinya secara otomatis tanpa kamu sadari.
| Kode | Nama | Kapan kamu menemuinya |
|---|---|---|
| 301 | Moved Permanently | Halaman pindah selamanya. Pakai alamat baru mulai sekarang. |
| 302 | Found | Pengalihan sementara. Halamannya pindah untuk saat ini saja. |
| 304 | Not Modified | Tidak ada yang berubah; pakai salinan tersimpan (cache). |
301 Moved Permanently penting kalau suatu saat kamu mengelola situs. Misalnya ACY Partner Indonesia mengubah URL sebuah halaman dari /halaman-lama ke /halaman-baru. Kode 301 memberi tahu browser dan mesin pencari “ini pindah permanen, perbarui catatanmu.” Mesin pencari akan mengalihkan peringkat halaman tadi ke alamat baru, dan itulah kenapa 301 sangat berpengaruh untuk SEO.
302 Found adalah versi sementaranya. Kontennya memang sedang berada di tempat lain, tapi kamu tetap harus memakai alamat aslinya karena perpindahannya tidak permanen. Kasus khas: kamu mencoba membuka halaman khusus anggota dalam keadaan belum login, lalu situs untuk sementara mengarahkanmu ke layar masuk.
304 Not Modified adalah trik percepatan yang cerdik. Browser mengingat berkas yang pernah ia unduh. Pada kunjungan berikutnya ia bertanya “apakah ini berubah sejak terakhir saya ambil?” Jika jawabannya tidak, server menjawab 304 dan tidak mengirim ulang seluruh berkas. Browser memakai kembali salinan tersimpannya, halaman terbuka lebih cepat, dan kuota data pun lebih hemat.
301 vs 302 dalam satu kalimat
Pakai 301 kalau sebuah halaman pindah selamanya (mesin pencari perlu memperbarui). Pakai 302 kalau cuma jalan memutar sementara dan URL asli tetap jadi alamat utamanya.
4xx — Kesalahan klien
Sekarang kita sampai pada kode yang berarti ada yang salah di sisimu. “Klien” hanyalah istilah teknis untuk pihak yang mengirim permintaan — biasanya browser-mu. Kode 4xx menandakan permintaannya sendiri bermasalah: bentuknya rusak, kamu tidak diizinkan, atau yang kamu cari memang tidak ada.
| Kode | Nama | Kapan kamu menemuinya |
|---|---|---|
| 400 | Bad Request | Permintaan rusak atau salah bentuk; server tidak memahaminya. |
| 401 | Unauthorized | Kamu harus login dulu — identitasmu belum terbukti. |
| 403 | Forbidden | Server tahu siapa kamu, tapi kamu tidak diizinkan masuk. |
| 404 | Not Found | Halaman atau sumber daya tidak ada di alamat itu. |
| 429 | Too Many Requests | Kamu mengirim permintaan terlalu cepat; pelan-pelan. |
400 Bad Request berarti server menerima sesuatu yang sama sekali tidak bisa ia pahami — misalnya formulir yang dikirim dengan data hilang atau berantakan. Permintaan itu bahkan belum sampai ke tahap “diproses” karena tidak terbaca.
401 Unauthorized berkaitan dengan siapa kamu. Artinya “saya belum tahu kamu siapa — tolong buktikan.” Kamu akan mendapat 401 saat mencoba mengakses sesuatu yang butuh login padahal kamu belum masuk. Meski namanya “Unauthorized”, inti masalahnya adalah autentikasi (membuktikan identitas).
403 Forbidden adalah tahap berikutnya. Di sini server justru sudah tahu persis kamu siapa, tapi kamu tetap tidak punya izin. Bayangkan Jane Doe sudah login sebagai pengguna biasa lalu mencoba membuka dasbor admin. Identitasnya jelas, tapi haknya tidak ada — maka server menjawab 403.
404 Not Found adalah si terkenal. Maknanya sederhana: tidak ada apa pun di alamat itu. Mungkin halamannya sudah dihapus, mungkin kamu salah ketik URL, atau mungkin ada tautan yang mengarah ke halaman yang sudah tidak ada lagi. Server-nya tidak rusak — ia cuma tidak menemukan apa yang kamu sebut.
429 Too Many Requests muncul saat kamu (atau sebuah program) membombardir server dengan terlalu banyak permintaan dalam waktu singkat. Demi melindungi diri, server berkata “pelan dulu” dan memintamu menunggu sebelum mencoba lagi. Ini disebut rate limiting, dan sering terjadi ketika sebuah skrip memanggil API terlalu agresif.
401 dan 403 gampang tertukar
401 = “saya belum tahu kamu siapa — silakan login.” 403 = “saya tahu kamu siapa, tapi kamu tidak diizinkan.” Yang satu soal identitas, yang lain soal izin.
5xx — Kesalahan server
Terakhir, kode 5xx. Di sini kesalahannya berbalik: kali ini server-lah yang gagal. Permintaanmu bisa jadi sudah benar sepenuhnya, tapi ada yang rusak di sisi sana sebelum server sempat memberi jawaban yang layak.
| Kode | Nama | Kapan kamu menemuinya |
|---|---|---|
| 500 | Internal Server Error | “Ada yang crash” di server, sifatnya umum. |
| 502 | Bad Gateway | Satu server menerima jawaban rusak dari server lain. |
| 503 | Service Unavailable | Server kelebihan beban atau sedang dimatikan untuk perawatan. |
500 Internal Server Error adalah penampung segala masalah. Maknanya server mengalami gangguan tak terduga — biasanya bug di dalam kodenya — sehingga tidak bisa menyelesaikan permintaanmu. Server sengaja tidak membeberkan detail (demi keamanan), jadi sebagai pengunjung yang bisa kamu lakukan hanyalah mencoba lagi nanti atau melaporkannya.
502 Bad Gateway terjadi pada susunan di mana satu server meneruskan permintaanmu ke server lain di belakang layar. Kalau server kedua itu mengembalikan jawaban kacau atau malah tidak menjawab sama sekali, server depan akan melaporkan 502. Anggap saja seperti kurir yang berkata “orang yang saya titipi pertanyaanmu memberi jawaban ngawur.”
503 Service Unavailable berarti server-nya hidup tapi untuk sementara tidak bisa melayanimu — sering karena kelebihan lalu lintas atau sedang dijeda untuk perawatan. Berbeda dari 500, yang ini biasanya pulih dengan sendirinya begitu lonjakan trafik mereda atau jadwal perawatan selesai.
PERMINTAAN ───▶ server depan ───▶ server aplikasi
◀── (crash / tanpa jawaban)
◀─── 502 Bad Gateway
Patokan cepat
Kalau sebuah angka diawali 4, periksa apa yang kamu kirim (URL salah, belum login, data keliru). Kalau diawali 5, masalahnya ada di sisi server dan biasanya kamu cuma bisa menunggu atau melapor.
Ringkasan
HTTP status code adalah cara server meringkas setiap permintaan ke dalam satu angka tiga digit, dan digit pertamanya hampir menjelaskan segalanya:
- 1xx — Informasi: “Masih diproses, tunggu.” Jarang disadari pengguna biasa.
- 2xx — Sukses: Berhasil. 200 OK, 201 Created, 204 No Content.
- 3xx — Pengalihan: Lihat ke tempat lain. 301 pindah permanen, 302 sementara, 304 pakai salinan cache.
- 4xx — Kesalahan klien: Permintaanmu bermasalah. 400 salah bentuk, 401 harus login, 403 tidak diizinkan, 404 tidak ditemukan, 429 terlalu banyak permintaan.
- 5xx — Kesalahan server: Server gagal. 500 crash, 502 jawaban rusak dari hulu, 503 kelebihan beban atau mati.
Dengan memahami ini, halaman error yang tadinya samar berubah jadi pesan yang jelas: 404 berarti halaman tidak ada, 403 berarti kamu kurang izin, 503 berarti coba lagi sebentar. Langkah lanjutan yang wajar adalah melihat di mana kode-kode ini berjalan — yaitu di dalam permintaan dan jawaban HTTP, berdampingan dengan hal seperti header dan method (GET, POST, dan kawan-kawannya). Begitu kamu memahami bagaimana satu permintaan dan jawaban utuh disusun, status code akan terasa seperti teman lama yang ternyata selalu ada dalam percakapan itu.