HTTP 401 Unauthorized

Требуется аутентификация: сервер не знает, кто вы, либо ваши учётные данные больше не работают.

Что означает HTTP 401

HTTP 401 Unauthorized означает, что запрос отклонён из-за отсутствия корректных учётных данных для аутентификации. Несмотря на название, речь идёт об аутентификации (кто вы), а не об авторизации (что вам разрешено) — второй случай это 403 Forbidden.

Соответствующий спецификации ответ 401 включает заголовок WWW-Authenticate, описывающий способ аутентификации, например Bearer для API на токенах или Basic для классической HTTP-аутентификации.

Частые причины ошибок 401

  • Учётные данные вообще не были отправлены (отсутствует заголовок Authorization или сессионная кука).
  • Истёкший, отозванный или некорректный токен — самая частая причина в API.
  • Неверная схема аутентификации (отправка API-ключа там, где ожидается Bearer-токен).
  • Сессия завершена: куки истекли или были очищены, пока вкладка оставалась открытой.
  • Рассинхронизация часов, из-за которой недолговечные JWT выглядят истёкшими уже на входе.

Как исправить со стороны пользователя

  • Войдите в систему заново — скорее всего, сессия истекла.
  • Если возникает зацикливание, очистите куки сайта и войдите заново.
  • Убедитесь, что URL не является админ- или staging-зоной, требующей учётной записи, которой у вас нет.

Как исправить со стороны разработчика

  • Обновляйте или перевыпускайте истёкшие токены; реализуйте автоматическое обновление токена в клиентах API.
  • Отправляйте заголовок Authorization точно в ожидаемом формате («Bearer <token>» — важны и слово, и пробел).
  • Возвращайте 401 только при отсутствующих/недействительных учётных данных и 403 для валидных пользователей без прав, чтобы клиенты могли реагировать корректно.
  • Проверяйте синхронизацию времени сервера (NTP), если проверка «exp» у JWT неожиданно проваливается.

Пример ответа

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="api", error="invalid_token", error_description="expired"

Частые вопросы

В чём разница между 401 и 403?

401 означает, что у сервера нет для вас корректных учётных данных — войдите в систему или обновите токен. 403 означает, что он знает, кто вы, и всё равно отказывает.

Почему я получаю 401 с действительным токеном?

Частые причины: истёкший токен, неверный формат заголовка, токен, выпущенный для другого окружения или аудитории, либо рассинхронизация часов сервера.

Должен ли неудачный вход возвращать 401?

Для API — да, с поясняющим телом ответа. Веб-формы входа обычно вместо этого возвращают 200 с сообщением об ошибке на странице.