HTTP, REST и APIJuniorСкрининг с HR
Отличия HTTP статусов 401 и 403 при работе с API
Краткий ответ
Код 401 означает, что запрос не аутентифицирован или содержит неверные учетные данные. Код 403 указывает на отказ в доступе даже при правильной аутентификации из-за недостаточных прав.
Развёрнуто
Краткий ответ
HTTP статус 401 сигнализирует, что для доступа к ресурсу необходима аутентификация или она некорректна. Статус 403 означает, что пользователь аутентифицирован, но не имеет разрешения на выполнение запрашиваемого действия.
Как это работает
HTTP статус-коды 401 и 403 относятся к классу ошибок доступа, но имеют разные причины возникновения:
401 Unauthorized— сервер сообщает, что запрос требует аутентификации. Это значит, что либо отсутствуют учетные данные, либо они некорректны или просрочены. Клиент должен предоставить корректные данные для доступа.403 Forbidden— сервер понял запрос и аутентифицировал пользователя, но отказывает ему в доступе из-за отсутствия необходимых прав или ограничений политики безопасности.
| Код | Значение | Причина возникновения |
|---|---|---|
| 401 | Unauthorized | Нет или неверные учетные данные |
| 403 | Forbidden | Недостаточно прав при верной аутентификации |
Пример
GET /api/orders HTTP/1.1
Host: example.com
Authorization: Bearer invalid_token
// Ответ сервера:
HTTP/1.1 401 Unauthorized
GET /api/orders HTTP/1.1
Host: example.com
Authorization: Bearer valid_token
// Пользователь аутентифицирован, но не имеет прав на просмотр заказов
HTTP/1.1 403 Forbidden
В первом случае сервер ожидает корректные учетные данные, а во втором — пользователь есть, но действия запрещены.
Что важно знать на собеседовании
- Статус 401 связан именно с аутентификацией, а 403 — с авторизацией.
- При 401 сервер может возвращать заголовок
WWW-Authenticateдля запроса учетных данных. - 403 статус означает, что повторные попытки с теми же учетными данными не изменят результат.
- Понимание разницы важно для тестирования безопасности и обработки API ошибок.
Тема: HTTP, REST и API | Уровень: junior