Узнайте, что означает любой код состояния HTTP, когда сервер его отправляет и в какой спецификации он определён. Ищите по номеру или ключевому слову, фильтруйте по классу и переходите по прямой ссылке на нужный код.
Сервер получил заголовки запроса, и клиент может отправить тело запроса. Такой ответ появляется, когда клиент передаёт «Expect: 100-continue» перед загрузкой большого тела запроса.
Отправляется до окончательного ответа, чтобы браузер мог начать предварительную загрузку ресурсов, перечисленных в заголовках Link. CDN и серверы используют этот ответ для ускорения загрузки страниц.
Запрос выполнен успешно, и возвращать содержимое не нужно. Часто используется для запросов DELETE и при сохранении данных, когда клиенту не требуется тело ответа.
Сервер возвращает только диапазон байтов, запрошенный клиентом. Такой ответ появляется при потоковой передаче видео, возобновлении загрузки или отправке клиентом заголовка Range.
Ресурс навсегда перемещён по URL из заголовка Location. Браузеры и поисковые системы обновляют ссылки; при переходе некоторые клиенты меняют метод POST на GET.
Ресурс временно доступен по другому URL, указанному в заголовке Location. Часто используется после входа в систему и для кратковременных перенаправлений; браузеры обычно переходят по нему с помощью GET.
Клиенту следует получить результат с другого URL с помощью GET. Используется после отправки формы методом POST, чтобы перенаправить пользователя на страницу подтверждения (схема Post/Redirect/Get).
Кэшированная копия всё ещё актуальна, поэтому сервер не отправляет тело ответа. Такой ответ появляется, когда браузер проверяет актуальность кэшированного файла с помощью If-None-Match или If-Modified-Since.
Ресурс временно доступен по другому URL, и клиент должен повторить запрос с тем же методом и телом. Также используется браузерами для внутренних перенаправлений HSTS на HTTPS.
Ресурс перемещён навсегда, и клиент должен использовать новый URL, сохранив метод и тело запроса. Постоянный вариант кода 307, безопасный для перенаправления запросов POST.
Сервер не может обработать запрос, поскольку он составлен некорректно: например, содержит ошибку в JSON, неверный параметр запроса или повреждённую cookie.
В запросе отсутствуют действительные учётные данные для аутентификации. Несмотря на название, этот код означает «не аутентифицирован»; сервер отправляет заголовок WWW-Authenticate с описанием способа входа.
Сервер понял запрос, но отказывает в его выполнении; повторный вход не поможет. Код встречается, если не хватает разрешений, отключён просмотр содержимого каталога или файрвол блокирует клиента.
Ресурс существует, но не поддерживает указанный HTTP-метод, например POST для URL, доступного только для чтения. В ответе перечислены разрешённые методы в заголовке Allow.
Как код 401, но сначала клиент должен пройти аутентификацию на прокси-сервере. Встречается в корпоративных сетях с прокси-сервером, требующим аутентификации.
Условие в заголовках запроса, например If-Match, не выполнено. Код используется, чтобы не перезаписать ресурс, изменившийся с момента последнего чтения клиентом.
Тело запроса превышает допустимый для сервера размер. Встречается при загрузке файла, превышающего установленный лимит, например client_max_body_size в nginx.
URL длиннее, чем сервер готов обработать. Обычно причина — форма, передающая слишком много данных методом GET, или цикл перенаправлений, постоянно добавляющий параметры.
Шутка ко Дню дурака из протокола управления кофейником Hyper Text 1998 года: чайник отказывается варить кофе. HTTP резервирует этот код как неиспользуемый, но некоторые серверы возвращают его как пасхалку или для отклонения нежелательных ботов.
Клиент отправил слишком много запросов за определённый период. API используют этот код для ограничения частоты запросов и часто добавляют заголовок Retry-After с указанием, когда можно повторить запрос.
Заголовки запроса слишком велики, часто из-за слишком большого количества cookie или их чрезмерного размера. Обычно проблему решает очистка cookie сайта.
Нестандартный код. nginx использует его внутри системы, чтобы закрыть соединение без отправки ответа, часто для отсеивания нежелательного трафика; клиенты фактически его не получают.
Нестандартный код. nginx записывает его в журнал, если клиент закрыл соединение до ответа сервера, например когда пользователь отменил загрузку медленной страницы или истёк тайм-аут на стороне клиента.
На сервере произошла непредвиденная ошибка, и он не смог выполнить запрос. Общая ошибка, вызванная сбоем, неполадкой или неправильной конфигурацией; подробности есть в журналах сервера.
Шлюз или прокси-сервер получил некорректный ответ от вышестоящего сервера. Частая причина — сбой или перезапуск приложения за nginx или балансировщиком нагрузки.
Сервер временно не может обработать запрос из-за перегрузки или технического обслуживания. В заголовке Retry-After может быть указано, когда можно повторить запрос.
Шлюз или прокси-сервер не получил ответ от вышестоящего сервера вовремя. Возникает, когда запрос к серверной части выполняется слишком долго, например при длительном запросе к базе данных.
Нестандартный код. Используется некоторыми конфигурациями виртуального хостинга (модулями Apache, cPanel), когда сайт превышает допустимый лимит трафика.
Клиент должен пройти аутентификацию, чтобы получить доступ к сети. Такой ответ отправляют порталы авторизации в Wi-Fi-сетях отелей, аэропортов и кафе до входа в сеть.
Нестандартный код. Cloudflare возвращает его, когда исходный сервер отклоняет соединение — обычно потому, что веб-сервер не работает или блокирует IP-адреса Cloudflare.
Нестандартный код. Cloudflare возвращает его, когда подключился к исходному серверу, но не получил ответ HTTP до истечения времени ожидания (по умолчанию — 100 секунд).
Нестандартный код. Cloudflare возвращает его, когда SSL-сертификат исходного сервера недействителен, а режим Full (strict) SSL включён.
Определён в Cloudflare
Как пользоваться
Введите номер кода (например, 404 или просто 5 для всех ошибок сервера) либо ключевое слово, например «перенаправление» или «тайм-аут».
Сузьте список с помощью фильтра по классу: информационные ответы, успешные ответы, перенаправления, ошибки клиента или ошибки сервера.
Нажмите «Копировать ссылку» у нужного кода, чтобы поделиться прямой ссылкой на него, например в отчёте об ошибке.
Как это работает
Каждый ответ HTTP начинается с трёхзначного кода состояния. Первая цифра определяет класс: 1xx — информационные ответы, 2xx — успешное выполнение, 3xx — перенаправление, 4xx — ошибки запроса, 5xx — ошибки на стороне сервера. Клиенты, которые не распознают конкретный код, обрабатывают его как код x00 того же класса, поэтому неизвестный код 4xx обрабатывается как 400.
Основные коды определены в RFC 9110 (семантика HTTP, 2022), который заменил более старый RFC 7231. Другие коды появились в расширениях: WebDAV (RFC 4918), RFC 6585 для 428, 429, 431 и 511, RFC 7725 для 451 и RFC 8470 для 425. В RFC 9110 также переименованы два кода: теперь 413 называется “Content Too Large”, а 422 — “Unprocessable Content”. Вы всё ещё можете встретить их старые названия: “Payload Too Large” и “Unprocessable Entity”.
Некоторые коды, встречающиеся в журналах, вообще не являются стандартными. nginx использует коды 444 и 494–499 внутри системы (499 означает, что клиент перестал ждать ответа), а Cloudflare возвращает 520–526, если не может получить корректный ответ от исходного сервера. В списке они помечены как “Non-standard”. Причины ответа (например, “Not Found”) приведены на английском, как в спецификациях; в HTTP/2 и HTTP/3 передаётся только номер.
Примеры
301 или 308 при переносе сайта
Оба кода означают постоянное перенаправление. Для обычного переноса страницы используйте 301; используйте 308, если клиент должен повторить запрос POST или PUT по новому URL: некоторые клиенты после ответа 301 меняют POST на GET.
Чем отличаются 401 и 403
API возвращает 401, если токен не передан или срок его действия истёк, — клиенту нужно войти в систему. Код 403 возвращается, если токен действителен, но у пользователя нет нужных прав; повторный вход не поможет.
Как разобраться с ошибкой 502 за nginx
502 Bad Gateway от nginx означает, что приложение за ним не ответило должным образом. Проверьте, запущен ли процесс приложения и что записано в журнале; 504 означает, что ответ пришёл слишком поздно.
Часто задаваемые вопросы
Чем отличаются коды 404 и 410?
404 означает, что сервер не может найти ресурс, и ничего не говорит о том, что будет с ним дальше. 410 указывает, что ресурс намеренно удалён и не появится снова; это помогает поисковым системам быстрее убрать URL из индекса.
Какой код возвращать при ошибке валидации — 400 или 422?
Подходят оба. Код 400 используют для запросов, которые сервер не может разобрать, например из-за некорректного JSON. Код 422 — для запросов, которые удалось разобрать, но в которых указаны недопустимые значения, например адрес электронной почты без символа @.
Код 418 I'm a teapot — настоящий код состояния?
Этот код появился в первоапрельском RFC 1998 года. RFC 9110 оставляет код 418 незанятым, чтобы его не присвоили чему-то ещё. Некоторые серверы возвращают его в шутку, но стандартного значения у него нет.
Откуда взялся код 499?
Код 499 используется только в nginx. Он появляется в логах nginx, когда клиент закрывает соединение до того, как сервер отправит ответ. Клиент никогда не получает код 499: обычно он указывает на медленные ответы или тайм-ауты на стороне клиента.
Считают ли поисковые системы код 302 таким же, как 301?
Код 302 указывает на временное перенаправление, поэтому поисковые системы обычно сначала сохраняют исходный URL в индексе. Если перенаправление по коду 302 действует долго, Google может считать его постоянным. Для постоянного перенаправления используйте код 301 или 308.
Конфиденциальность
Список находится на этой странице. Поиск и фильтрация выполняются в вашем браузере; поисковые запросы никуда не отправляются и не попадают в аналитику.