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 с сообщением об ошибке на странице.