HTTP 401 Грешка срещу HTTP 403 Грешка - Обяснени са отговорите на кода на състоянието

По-рано сме разглеждали кода за грешка 403 (Забранен) HTTP, но той също има почти идентичен брат.

И така, каква точно е разликата между кодовете на състоянието 401 (Неразрешено) и 403 (Забранено)? Със сигурност имат предвид едно и също нещо? Нека да разгледаме отблизо!

RFC стандарти

Най-актуалният RFC стандарт, определящ 401 (Неразрешен), е RFC 7235

Кодът на състоянието 401 (неоторизиран) показва, че заявката не е приложена, тъй като липсват валидни идентификационни данни за удостоверяване за целевия ресурс ... Потребителският агент МОЖЕ да повтори заявката с ново или заменено поле за заглавие на оторизация.

Докато 403 (Забранено) е последно дефинирано в RFC 7231

Кодът на състоянието 403 (Забранен) показва, че сървърът е разбрал заявката, но отказва да я упълномощи ... Ако в заявката са били предоставени идентификационни данни за удостоверяване, сървърът ги смята за недостатъчни за предоставяне на достъп.

Чести причини

Както бе споменато в предишната статия, грешката 403 може да възникне, когато потребителят е влязъл, но няма достатъчно права за достъп до искания ресурс. Например, генеричен потребител може да се опитва да зареди „администраторски“ маршрут.

Най-очевидният момент, в който ще срещнете грешка 401, от друга страна, е, когато изобщо не сте влезли в системата или сте предоставили неправилната парола.

Това са двете най-чести причини за тази двойка грешки.

По-рядко срещани причини

Има някои случаи, в които обаче не е толкова лесно.

403 грешки могат да възникнат поради ограничения, които не са изцяло зависими от идентификационните данни на влезлия потребител.

Например сървърът може да е заключил определени ресурси, за да разреши достъп само от предварително определен диапазон от IP адреси, или да използва геоблокиране. Последното може да бъде заобиколено с VPN.

Може да възникнат грешки 401, дори ако потребителят въведе правилните идентификационни данни. Това е рядко и може да е нещо, с което наистина се сблъсквате, докато разработвате свои собствени удостоверени задни краища. Но ако заглавката на оторизацията е неправилно оформена, тя ще върне 401.

Например може да имате JWT (JSON Web Token), който искате да включите в заглавката на заявката, който очаква формата Authorization: Bearer eyJhbGci......yJV_adQssw5c. Ако трябва да забравите думата „Приносител“ преди JWT, ще срещнете грешка 401.

Аз сам се натъкнах на този проблем, когато тествах API-та в процес на разработка с Postman и забравих правилния синтаксис за заглавките на auth!

Това е

Надявам се това да изчисти всякакво объркване около тези много подобни грешки.

Ако сметнете това за полезно или искате да оспорите или разширите нещо повдигнато тук, не се колебайте да се свържете с мен в Twitter @JacksonBates.