Am mai acoperit codul de eroare HTTP 403 (Interzis) în detaliu, dar are și un frate aproape identic.

Deci, care este diferența exactă între codurile de stare 401 (neautorizate) și 403 (interzise)? Cu siguranță înseamnă același lucru? Să aruncăm o privire mai atentă!

Standardele RFC

Cel mai actualizat standard RFC care definește 401 (neautorizat) este RFC 7235

Codul de stare 401 (neautorizat) indică faptul că solicitarea nu a fost aplicată deoarece nu are acreditări de autentificare valide pentru resursa țintă … Agentul utilizator POATE repeta solicitarea cu un câmp de antet de autorizare nou sau înlocuit.

În timp ce 403 (Interzis) este definit cel mai recent în RFC 7231

Codul de stare 403 (Interzis) indică faptul că serverul a înțeles cererea, dar refuză să o autorizeze … Dacă acreditări de autentificare au fost furnizate în cerere, serverul le consideră insuficiente pentru a acorda acces.

Cauze comune

După cum sa menționat în articolul anterior, eroarea 403 poate rezulta atunci când un utilizator s-a conectat, dar nu are privilegii suficiente pentru a accesa resursa solicitată. De exemplu, un utilizator generic poate încerca să încarce un traseu de „administrator”.

Cel mai evident moment în care ați întâmpina o eroare 401, pe de altă parte, este când nu v-ați autentificat deloc sau ați furnizat parola incorectă.

Acestea sunt cele două cauze cele mai frecvente pentru această pereche de erori.

Cauze mai puțin frecvente

Există însă unele cazuri în care nu este la fel de simplu ca acesta, totuși.

Erorile 403 pot apărea din cauza restricțiilor care nu depind în totalitate de acreditările utilizatorului conectat.

De exemplu, un server poate fi blocat anumite resurse pentru a permite accesul doar dintr-o gamă predefinită de adrese IP sau poate utiliza blocarea geografică. Acesta din urmă poate fi ocolit cu un VPN.

Erorile 401 pot apărea chiar dacă utilizatorul introduce acreditările corecte. Acest lucru este rar și ar putea fi ceva pe care îl întâlniți cu adevărat doar în timp ce vă dezvoltați propriile back-end-uri autentificate. Dar dacă antetul de autorizare este malformat, acesta va returna un 401.

De exemplu, este posibil să aveți un JWT (JSON Web Token) pe care doriți să îl includeți în antetul cererii, care așteaptă formatul Authorization: Bearer eyJhbGci......yJV_adQssw5c. Dacă ai uita cuvântul „Purtător” înainte de JWT, ai întâlni eroarea 401.

M-am confruntat cu această problemă când testez API-urile aflate în curs de dezvoltare cu Postman și uit de sintaxa corectă pentru anteturile de autentificare!

Asta este

Sper că acest lucru clarifică orice confuzie în jurul acestor erori foarte similare.

Dacă vi s-a părut util acest lucru sau doriți să contestați sau să extindeți orice a fost ridicat aici, nu ezitați să mă contactați pe Twitter @JacksonBates.