HTTP 401 и 403: в чём разница и как исправить

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

401 — нет аутентификации, 403 — нет прав; проверьте токен и роли.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Что делать при 401
  5. Что делать при 403
  6. Рекомендации разработчикам

#Что означает ошибка

Сообщение
401 и 403

Коды 401 и 403 часто путают, а ведь они означают разное. 401 Unauthorized — сервер не знает, кто вы: нет учётных данных, они неверны или срок токена истёк. 403 Forbidden — сервер знает, кто вы, но не разрешает доступ к ресурсу. Для 401 нужно «представиться» (войти, передать токен), для 403 — получить права или сменить ресурс.

Различие важно как для пользователей (повторный вход против обращения к администратору), так и для разработчиков (какой код возвращать в API). Неверное применение кодов усложняет диагностику и работу клиентских приложений.

401 — нет аутентификации, 403 — нет прав; проверьте токен и роли.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Токен истёкСрок.Проявляется как «401 и 403» или близкий по смыслу сбой.Обновите.
Нет правРоль.Проявляется как «401 и 403» или близкий по смыслу сбой.Выдайте.
Неверный ключAPI.Проявляется как «401 и 403» или близкий по смыслу сбой.Проверьте.
Блокировка IPФильтр.Проявляется как «401 и 403» или близкий по смыслу сбой.Разрешите.

#Пошаговое решение

  1. Проверьте токенДля собственных API-запросов: откройте вкладку «Сеть» в инструментах разработчика браузера (F12 → «Сеть»), воспроизведите отказ и найдите запрос со статусом 401. Проверьте, что пользователь действительно вошёл в систему и его токен не истёк. Не вставляйте настоящий токен в публичные сайты (включая декодировщики JWT) и не публикуйте заголовок Authorization. Обновляйте токен только штатным методом авторизации своего API.
  2. Проверьте рольПри коде 403 у авторизованного пользователя проверьте его роль и разрешённые действия в настройках своего приложения. Если требуется scope, сравните его с документацией API и выданными разрешениями, не подбирайте права обходом. Обычному посетителю нужно запросить доступ у владельца ресурса; повторный вход или новый токен не создают отсутствующие права автоматически.
  3. Прочитайте ответ сервераВ браузере F12 → вкладка «Сеть» → нужный запрос → «Заголовки/Ответ». Проверьте наличие WWW-Authenticate при 401, тело ответа и идентификатор запроса. В 403 заголовка авторизации может не быть, поскольку отказ часто связан именно с правами. Передавайте в поддержку URL, статус и время запроса без cookie, токенов и конфиденциальных данных.

#Что делать при 401

Выйдите из аккаунта и войдите снова, очистите cookie сайта, проверьте корректность логина и пароля. В API проверьте заголовок Authorization: схема (Bearer, Basic), отсутствие лишних пробелов и срок жизни токена. Сервер при 401 обязан вернуть заголовок WWW-Authenticate с описанием способа аутентификации.

#Что делать при 403

Проверьте, есть ли у вашей роли разрешение на ресурс. На сайтах это может быть блокировка по IP или стране, правила файрвола (WAF), права на файлы и каталоги веб-сервера, запрет листинга каталога без index-файла. В API 403 нередко возвращается при отсутствии нужного scope у токена.

#Рекомендации разработчикам

Не раскрывайте через 403 существование ресурсов, к которым у клиента нет доступа (в таких случаях безопаснее 404). Возвращайте в теле ответа машиночитаемую причину и логируйте попытки. Следите, чтобы истёкший токен давал 401 и позволял клиенту обновить его автоматически.

Linux · Терминал (Bash)Команда
Проверка авторизации запроса: смотрите статус и заголовок WWW-Authenticate в ответе.
curl -i -H "Authorization: Bearer ТОКЕН" https://api.example.com/me

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.