Какой http-код использовать для неавторизованного пользователя, 401 или 403?
- 401 Unauthorized («неавторизован»)
- 403 Forbidden («запрещено»)
В чём разница в http-кодах 401 и 403?
|
Какой http-код использовать для неавторизованного пользователя, 401 или 403?
В чём разница в http-кодах 401 и 403? |
|||
|
|
Response c кодом 401 или 403 означает, что клиент не может просмотреть страницу, т.к. недостаточно прав для этого. Переведём официальную документацию, чтобы понять, какой http-код лучше использовать (401 vs 403). Код 401 Unauthorized
Для выполнения запроса пользователь должен быть авторизован. Ответ должен включать заголовок с полем "WWW-Authenticate", где через запятую должны быть перечислены параметры, необходимые для авторизации. При ответе с кодом 401 пользователь может повторить свой запрос. Клиент должен выполнить условия авторизации, после чего сделать повторный запрос. Код 403 Forbidden.
Сервер понял запрос, но не захотел его выполнять. Нет разрешения на запрос и запрос не должен быть повторён. Сервер должен объяснить клиенту, почему запрос не может быть выполнен (это касается всех методов, кроме HEAD). Если сервер не хочет описывать причину не выполнения запроса клиенту, то сервер должен возвращать http-статус 404 Not Found вместо 403 Forbidden. Подведём итог, использовать 401 или 403?Если клиент может получить доступ к странице (например, пройдя авторизацию), то нужно возвращать http-код 401. 401 нужно возвращать при отсутствующей или просроченной авторизации. Если мы знаем, что доступ к странице для клиента закрыт, не может быть получен, то нужно возвращать http-код 403. Код 403 также следует возвращать, если клиент авторизован, но у него недостаточно прав для просмотра данной страницы. Т.е. 403 код говорит "Извините, я знаю кто вы (вы авторизованы). Но, к сожалению, у вас нет прав для доступа к данному ресурсу. Возможно, вам нужно обратиться к администратору ресурса за получением разрешений." Клиенту не имеет смысл повторять запрос. |
|||
|
– anonymous год назад