Инструмент для разработчиков

Коды состояния HTTP

Поиск по номеру или названию. Что означает каждый код и когда его использовать.

Коды состояния HTTP Работает на вашем устройстве
  • Работает в вашем браузере — текст никуда не отправляется
  • Без регистрации и квот, пользуйтесь бесплатно сколько угодно

Как это работает

Большинство кодов состояния очевидны, а некоторые действительно путают, особенно похожие по звучанию. Введите номер, слово вроде forbidden или 4xx, чтобы увидеть весь класс.

401 и 403, пара, которую все путают

401 Unauthorized на самом деле означает «не аутентифицирован»: сервер не знает, кто вы, и передача учётных данных может помочь. 403 Forbidden означает, что сервер прекрасно знает, кто вы, и всё равно вам нельзя. Названия исторические и малоинформативные; различие важно, потому что в одном случае предлагается войти, а в другом — нет.

301 и 302, и почему это важно для SEO

301 — постоянный и передаёт сигналы ранжирования на новый адрес. 302 — временный и оставляет их на прежнем. Использовать 302 для постоянного перемещения — распространённая и незаметно дорогая ошибка. 307 и 308 — современные аналоги, которые дополнительно гарантируют, что метод не изменится: POST остаётся POST, чего 301 и 302 исторически не обеспечивали.

422 для валидации

400 Bad Request означает, что сервер вообще не смог понять запрос. 422 Unprocessable Content означает, что он понял его прекрасно, но содержимое неверно: не хватает поля, недопустимый адрес электронной почты. Большинству API стоило бы возвращать 422 при ошибках валидации, а они по привычке возвращают 400.

Классы

1xx — информационные, 2xx — успех, 3xx — перенаправление, 4xx — вина клиента, 5xx — вина сервера. Последнее разделение полезно, когда при инциденте нужно распределить ответственность: всплеск 4xx означает, что вызывающие стороны делают что-то не так, всплеск 5xx — что не так у вас.

418

Я — чайник: шутка на 1 апреля 1998 года, которую позже всерьёз стандартизировали после того, как попытка убрать её из реализаций вызвала возмущение. Для реального использования код не предназначен, но он — подлинная часть спецификации.

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

Коды состояния HTTP: вопросы и ответы

Чем отличаются 401 и 403?

401 означает, что пользователь не аутентифицирован: сервер не знает, кто вы. 403 означает, что сервер знает, кто вы, но доступ всё равно запрещён.

Использовать 301 или 302?

301 — для постоянного перемещения, при нём передаётся ранжирование. 302 — для временного. Если HTTP-метод менять нельзя, используйте 308 и 307.

Какой код возвращать при ошибке валидации?

422 Unprocessable Content. 400 означает, что запрос вообще не удалось понять.

418 — это настоящий код?

Да. Он появился как первоапрельская шутка 1998 года и действительно стандартизирован, хотя для реального использования не предназначен.

Что означает 502?

Прокси получил некорректный ответ от сервера, стоящего за ним, — обычно приложение не работает или аварийно завершается.