Я думаю, что важно учитывать, что для браузера 401 инициирует диалог аутентификации для пользователя, чтобы ввести новые учетные данные, а 403 - нет. Браузеры считают, что если возвращается 401, то пользователь должен повторно пройти аутентификацию. Таким образом, 401 означает недействительную аутентификацию, а 403 - отсутствие разрешения.
Вот некоторые случаи в соответствии с этой логикой, когда ошибка будет возвращена после аутентификации или авторизации, с выделением важных фраз.
- Ресурс требует аутентификации, но нет учетных данных были указаны .
401 : клиент должен указать учетные данные.
- Указанные учетные данные имеют недопустимый формат .
400 : это ни 401, ни 403, поскольку синтаксические ошибки всегда должны возвращать 400.
- Указанные учетные данные ссылаются на пользователя , которого не существует .
401 : клиент должен указать действительные учетные данные.
- Указанные учетные данные являются недействительными , но указывают действительного пользователя (или не указывают пользователя, если указанный пользователь не требуется).
401 : Опять же, клиент должен указать действительные учетные данные.
- Указанные учетные данные имеют срок действия истек .
401 : Это практически то же самое, что в общем случае иметь недействительные учетные данные, поэтому клиент должен указать действительные учетные данные.
- Указанные учетные данные полностью действительны, но их недостаточно конкретный ресурс , хотя вполне возможно, что учетные данные с большим разрешением могут.
403 : Указание действительных учетных данных не предоставит доступ к ресурсу, поскольку текущие учетные данные уже действительны, но только не имеют разрешения.
- Конкретный ресурс является недоступным независимо от учетных данных.
403 : Это не зависит от учетных данных, поэтому указание действительных учетных данных не может помочь.
- Указанные учетные данные полностью действительны, но конкретный клиент заблокирован от их использования.
403 : если клиент заблокирован, указание новых учетных данных ничего не изменит.