Dengan asumsi otentikasi HTTP ( WWW-Otentikasi dan header Otorisasi ) sedang digunakan , jika otentikasi sebagai pengguna lain akan memberikan akses ke sumber daya yang diminta, maka 401 Tidak Sah harus dikembalikan.
403 Forbidden digunakan ketika akses ke sumber daya dilarang untuk semua orang atau terbatas pada jaringan tertentu atau hanya diizinkan melalui SSL, apa pun asalkan tidak ada hubungannya dengan otentikasi HTTP.
Jika otentikasi HTTP tidak digunakan dan layanan skema otentikasi berbasis cookie seperti norma saat ini, maka 403 atau 404 harus dikembalikan.
Mengenai 401, ini dari RFC 7235 (Protokol Transfer Hiperteks (HTTP / 1.1): Otentikasi):
3.1. 401 Tidak Resmi
Kode status 401 (Tidak Resmi) menunjukkan bahwa permintaan belum diterapkan karena tidak memiliki kredensial otentikasi yang valid untuk sumber daya target. Server asal HARUS mengirim bidang header WWW-Otentikasi (Bagian 4.4) yang mengandung setidaknya satu tantangan yang berlaku untuk sumber daya target. Jika permintaan menyertakan kredensial autentikasi, maka respons 401 menunjukkan bahwa otorisasi telah ditolak untuk kredensial tersebut. Klien MUNGKIN mengulangi permintaan dengan bidang header Otorisasi baru atau yang diganti (Bagian 4.1). Jika respons 401 berisi tantangan yang sama dengan respons sebelumnya, dan agen pengguna telah mencoba otentikasi setidaknya satu kali, maka agen pengguna HARUS menyajikan representasi terlampir kepada pengguna, karena biasanya berisi informasi diagnostik yang relevan.
Semantik 403 (dan 404) telah berubah seiring waktu. Ini dari tahun 1999 (RFC 2616):
10.4.4 403 Dilarang
Server mengerti permintaan itu, tetapi menolak untuk memenuhinya.
Otorisasi tidak akan membantu dan permintaan TIDAK HARUS diulang.
Jika metode permintaan itu bukan KEPALA dan server ingin mengumumkan kepada
publik mengapa permintaan itu belum dipenuhi, itu HARUS menggambarkan alasan penolakan di entitas. Jika server tidak ingin membuat informasi ini tersedia untuk klien, kode status 404
(Tidak Ditemukan) dapat digunakan sebagai gantinya.
Pada 2014 RFC 7231 (Protokol Transfer Hiperteks (HTTP / 1.1): Semantik dan Konten) mengubah arti 403:
6.5.3. 403 Dilarang
Kode status 403 (Terlarang) menunjukkan bahwa server memahami permintaan tersebut tetapi menolak untuk mengesahkannya. Server yang ingin mengumumkan kepada publik mengapa permintaan itu dilarang dapat menggambarkan alasan itu dalam payload respons (jika ada).
Jika kredensial otentikasi diberikan dalam permintaan,
server menganggapnya tidak cukup untuk memberikan akses. Klien
TIDAK HARUS mengulangi permintaan dengan
kredensial yang sama . Klien MUNGKIN mengulangi permintaan dengan kredensial baru atau berbeda. Namun, permintaan mungkin dilarang karena alasan yang
tidak terkait dengan kredensial.
Server asal yang ingin "menyembunyikan" keberadaan saat ini dari
sumber daya target terlarang MUNGKIN merespons dengan kode status
404 (Tidak Ditemukan).
Jadi, 403 (atau 404) sekarang mungkin berarti tentang apa pun. Memberikan kredensial baru mungkin membantu ... atau mungkin juga tidak.
Saya percaya alasan mengapa hal ini berubah adalah RFC 2616 diasumsikan otentikasi HTTP akan digunakan ketika dalam praktiknya aplikasi Web saat ini membangun skema otentikasi khusus menggunakan misalnya formulir dan cookie.