TanodTools
RU

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

Найдите любой код состояния HTTP по номеру или слову: понятное объяснение, частые причины, способы исправления и RFC, где он определён.

Работает полностью в браузере

Фильтр по классу

Перечислены коды из реестра IANA HTTP Status Code Registry (306 и 418 показаны как зарезервированные) и небольшой набор широко встречающихся неофициальных кодов nginx, Cloudflare и Laravel с указанием источника. Прочие коды, специфичные для других поставщиков, не охвачены.

Как найти код состояния

  1. Введите в строку поиска номер, например 502, или слово, например лимит запросов или редирект.
  2. Сузьте список кнопками классов: от 1xx до 5xx для стандартных кодов или «Неофициальные» для кодов nginx, Cloudflare и Laravel.
  3. Откройте код, чтобы узнать, когда он появляется и что с ним делать клиенту и владельцу сервера. Ссылка # даёт прямую ссылку на этот код.

Как читать коды состояния HTTP

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

Официальный список ведётся в реестре IANA HTTP Status Code Registry, а значения описаны в RFC 9110 (HTTP Semantics) и нескольких других RFC для WebDAV и расширений. Поясняющая фраза после номера, например Not Found, — всего лишь подпись; HTTP/2 и HTTP/3 её не передают. Некоторые названия были изменены в 2022 году: 413 теперь Content Too Large, а 422 — Unprocessable Content.

Серверы вне стандартов тоже придумывают свои коды. nginx записывает в журнал 499, когда клиент разорвал соединение, а Cloudflare использует 520–526 для описания сбоев между своей сетью и вашим исходным сервером. Здесь они вынесены в отдельную группу, чтобы их не приняли за зарегистрированные коды. При отладке помните, что код, который вы видите, может исходить от прокси или CDN перед вашим приложением, а не от самого приложения.

Советы

Вопросы и ответы

Что означают пять классов кодов состояния?

Класс определяет первая цифра. 1xx — информационные коды, запрос ещё выполняется; 2xx — успех; 3xx — клиенту нужно сделать ещё один шаг (обычно перенаправление); 4xx — проблема в запросе на стороне клиента; 5xx — сбой сервера при выполнении запроса, который выглядел корректным.

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

401 означает, что сервер не знает, кто вы: учётные данные отсутствуют, неверны или просрочены, и вход в систему может помочь. 403 означает, что он знает, кто вы, но вам это не разрешено, поэтому повторная отправка тех же данных не поможет.

Что использовать для перенаправления, 301 или 302?

Используйте 301 (или 308), если переезд постоянный: браузеры и поисковые системы перейдут на новый адрес. Используйте 302 (или 307), если старый адрес вернётся. Коды 307 и 308 сохраняют метод запроса, а при 301 и 302 старые клиенты могут превратить POST в GET.

418 «Я чайник» — настоящий код состояния?

Он появился как первоапрельская шутка в RFC 2324 о протоколе управления кофейником. Сейчас IANA указывает 418 как неиспользуемый и зарезервированный, чтобы ему не придали настоящий смысл. Некоторые сайты до сих пор возвращают его ради шутки или чтобы отвадить парсеры, но стандартным ответом он не является.

Что такое 520–526 и 499?

Их нет в стандартах HTTP. Коды 520–526 — ошибки Cloudflare, сообщающие о проблемах между Cloudflare и вашим сервером, а 499 — код журнала nginx для клиента, который отключился до получения ответа. Они показаны в группе «Неофициальные» с указанием источника.

Почему ошибка 5xx иногда пропадает при повторе?

Многие ошибки 5xx вызваны перегрузкой, перезапуском бэкенда или кратковременным сбоем сети и могут исчезнуть за секунды. Повтор с растущей задержкой безопасен для идемпотентных запросов, таких как GET; для POST убедитесь, что первая попытка уже не прошла успешно.