Dua kode ini kelihatan mirip — sama-sama artinya “akses ditolak”. Tapi sebenarnya keduanya menjawab dua pertanyaan yang berbeda. Salah pilih kode, API kamu jadi membingungkan dan berpotensi bocor informasi.
Inti Perbedaannya dalam Satu Kalimat
401 Unauthorized → Authentication — “Kamu ini siapa? Belum kenal aku.”
403 Forbidden → Authorization — “Aku sudah tahu kamu siapa, tapi kamu tidak punya izin untuk ini.”
1. 401 Unauthorized — Masalah Identitas
Server belum tahu siapa yang sedang mengakses. Kredensialnya tidak ada, tidak valid, atau sudah kedaluwarsa.
- Tidak mengirim token / API key sama sekali
- Token sudah expired
- Token rusak, dipalsukan, atau signature-nya tidak cocok
- Password / kredensial salah saat login
Ciri khas: server mengirim header WWW-Authenticate — semacam petunjuk cara login yang benar.
Solusi untuk client: login ulang atau refresh token.