К списку
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