Запрос HTTP-кодов состояния
Быстрый поиск значений кодов состояния HTTP, включая все стандартные коды
1xx Информация(4)
Продолжить. Клиент должен продолжить отправку оставшейся части запроса.
Переключение протоколов. Сервер понял запрос клиента и уведомляет о переключении протокола через заголовок Upgrade.
Обработка. Сервер получил запрос и обрабатывает его, но ещё не завершил.
Ранние подсказки. Используется для возврата некоторых заголовков перед финальным ответом, помогая клиенту предварительно загрузить ресурсы.
2xx Успех(10)
Успех. Запрос успешно обработан, ответ содержит запрошенные данные.
Создано. Запрос успешен и создан новый ресурс. Обычно используется для POST-запросов.
Принято. Запрос принят для обработки, но она ещё не завершена. Часто используется для асинхронной обработки.
Неавторитетная информация. Сервер успешно обработал запрос, но возвращённая информация может быть от третьей стороны.
Нет содержимого. Запрос успешен, но ответ не содержит тела сообщения. Часто используется для DELETE-запросов.
Сброс содержимого. Запрос успешен, клиент должен сбросить представление документа.
Частичное содержимое. Сервер успешно обработал частичный GET-запрос, используется для возобновления загрузки.
Многостатусный. Ответ с несколькими кодами состояния (WebDAV).
Уже сообщено. Участники привязки DAV уже были перечислены в предыдущем многостатусном ответе (WebDAV).
IM использован. Сервер выполнил GET-запрос, ответ использует операции экземпляра.
3xx Перенаправление(8)
Множество вариантов. Запрошенный ресурс имеет несколько представлений, клиент должен выбрать.
Перемещён навсегда. Запрошенный ресурс навсегда перемещён на новый URL, следует использовать новый адрес.
Найдено. Запрошенный ресурс временно доступен по другому URL.
Смотреть другое. Следует использовать GET-метод для доступа к другому URL.
Не изменено. Ресурс не был изменён, клиент может использовать кешированную версию.
Использовать прокси (устарело). Доступ к ресурсу должен осуществляться через указанный прокси.
Временное перенаправление. Запрос должен быть перенаправлен на другой URL с тем же методом и телом.
Постоянное перенаправление. Запрос должен быть навсегда перенаправлен на другой URL с тем же методом.
4xx Ошибка клиента(29)
Неверный запрос. Сервер не может понять формат запроса, клиент должен изменить запрос и повторить.
Не авторизован. Запрос требует аутентификации пользователя.
Требуется оплата. Зарезервировано для будущего использования, часто используется для платного контента.
Запрещено. Сервер понял запрос, но отказывается его выполнять.
Не найдено. Запрошенный ресурс не существует, самый распространённый код состояния.
Метод не разрешён. Метод запроса не поддерживается, ответ будет содержать заголовок Allow.
Неприемлемо. Сервер не может вернуть ответ в соответствии с типом содержимого, запрошенным клиентом.
Требуется аутентификация прокси. Клиент должен сначала аутентифицироваться на прокси-сервере.
Таймаут запроса. Сервер ожидал запрос слишком долго.
Конфликт. Запрос конфликтует с текущим состоянием сервера, часто используется для PUT-запросов.
Удалено. Запрошенный ресурс навсегда удалён и не будет восстановлен.
Требуется длина. Запрос должен содержать заголовок Content-Length.
Условие не выполнено. Условие в заголовке запроса не удовлетворено.
Тело запроса слишком велико. Тело запроса превышает размер, который сервер готов обработать.
URI слишком длинный. Запрошенный URL слишком длинный для обработки сервером.
Неподдерживаемый тип медиа. Формат тела запроса не поддерживается сервером.
Диапазон не может быть удовлетворён. Запрошенный диапазон недопустим.
Ожидание не выполнено. Сервер не может удовлетворить ожидание в заголовке Expect.
Я — чайник. Пасхалка из RFC 2324, означает, что сервер отказывается варить кофе.
Неправильно направленный запрос. Запрос отправлен на сервер, который не может сгенерировать ответ.
Необрабатываемая сущность. Формат запроса правильный, но семантическая ошибка не позволяет обработать его.
Заблокировано. Запрошенный ресурс заблокирован (WebDAV).
Сбой зависимости. Запрос не выполнен из-за сбоя предыдущего запроса (WebDAV).
Слишком рано. Сервер не готов обработать запрос, который может быть воспроизведён.
Требуется обновление. Клиент должен переключиться на протокол TLS.
Требуется предварительное условие. Запрос должен содержать условный заголовок (например, If-Match).
Слишком много запросов. Пользователь отправляет запросы слишком часто, следует ограничить скорость.
Заголовки запроса слишком велики. Заголовки запроса слишком большие для обработки сервером.
Недоступно по юридическим причинам. Ресурс недоступен по юридическим причинам.
5xx Ошибка сервера(11)
Внутренняя ошибка сервера. Сервер столкнулся с неожиданной ситуацией и не может выполнить запрос.
Не реализовано. Сервер не поддерживает функциональность, необходимую для запроса.
Неверный шлюз. Сервер в качестве шлюза или прокси получил недопустимый ответ от вышестоящего сервера.
Сервис недоступен. Сервер временно не может обработать запрос, возможно из-за перегрузки или обслуживания.
Таймаут шлюза. Сервер в качестве шлюза или прокси не получил своевременный ответ от вышестоящего сервера.
Версия HTTP не поддерживается. Сервер не поддерживает версию HTTP, используемую в запросе.
Вариант тоже согласуется. Ошибка конфигурации сервера, приводящая к циклу согласования содержимого.
Недостаточно места. Сервер не может сохранить ресурс, необходимый для выполнения запроса (WebDAV).
Обнаружен цикл. Сервер обнаружил бесконечный цикл при обработке запроса (WebDAV).
Не расширено. Требуется дальнейшее расширение запроса для обработки.
Требуется сетевая аутентификация. Требуется сетевая аутентификация для продолжения (например, вход в hotspot).
Что такое коды состояния HTTP?
Справочник HTTP-кодов состояния объясняет ответы, которые сервер возвращает браузеру, поисковому роботу, приложению или API-клиенту после запроса. Коды 2xx обычно означают успех, 3xx — перенаправление, 4xx — проблему на стороне клиента, а 5xx — сбой на стороне сервера, но важны детали. 401 отличается от 403, 404 не равен 410, а 301 имеет другие SEO-последствия, чем 302. Инструмент помогает разработчикам, специалистам поддержки и владельцам сайтов быстро понять код и выбрать следующий шаг проверки в логах, заголовках, маршрутах или настройках доступа. Такая детализация сокращает время диагностики и уменьшает риск неверного исправления. Особенно полезно сопоставлять код с методом запроса и фактическим ответом сервера.
Как использовать
Быстрая справка
- Нажмите на карточку кода состояния, чтобы скопировать код
- Используйте строку поиска, чтобы быстро найти нужный код
- Нажмите на теги категорий, чтобы отфильтровать коды по типу
- Наведите курсор на коды, чтобы увидеть подробные описания
Примечания по отладке
- Сначала определите семейство кода: 2xx — успех, 3xx — перенаправление, 4xx — ошибка клиента, 5xx — ошибка сервера.
- При отладке API сопоставляйте код состояния с телом ответа, заголовками, методом запроса и серверными логами — один код редко объясняет проблему целиком.
Применение
Технический принцип
Коды состояния HTTP — это трёхзначные целые числа, возвращаемые в строке начала ответа, определённые спецификацией HTTP Semantics. Текущий нормативный источник — RFC 9110 (HTTP Semantics, июнь 2022), который заменяет предыдущую серию RFC 7231, с расширениями в RFC 9111 (Caching), RFC 9112 (HTTP/1.1), RFC 9113 (HTTP/2) и RFC 9114 (HTTP/3). Первая цифра определяет класс ответа, поэтому нераспознанные коды всё равно имеют предсказуемую обработку: 1xx — информационные (промежуточные, за ними следует финальный ответ), 2xx — успешные, 3xx — перенаправления (требуется дополнительное действие клиентом), 4xx — ошибки клиента (запрос сформирован некорректно или не может быть выполнен), 5xx — ошибки сервера. Кеши и промежуточные узлы обязаны обрабатывать неизвестные коды как обобщённый код класса x00 (например, неизвестный 4xx обрабатывается как 400), именно это делает семейство кодов значимым даже для проприетарных или расширенных кодов. Коды перенаправления несут семантику сохранения метода, которая исторически отклонялась от намерения. RFC 9110 раздел 15.4 делает различие явным: 301 Moved Permanently и 302 Found могут перезаписать POST в GET (фактическое поведение, к которому пришли все браузеры к концу 1990-х, закреплённое в RFC 7231); 307 Temporary Redirect и 308 Permanent Redirect требуют от клиента повторить тот же метод и тело. SEO-инструменты обычно передают вес, аналогичный PageRank, при 301 и 308 и рассматривают 302/307 как сохраняющие сигнал исходного URL. Условные коды 304 Not Modified и 412 Precondition Failed зависят от заголовков запроса If-None-Match / If-Modified-Since / ETag / Last-Modified, а 206 Partial Content отвечает на заголовок Range заголовком Content-Range и телом multipart/byteranges при запросе нескольких диапазонов. Классы 4xx и 5xx несут детали контракта в заголовках. 401 Unauthorized должен содержать WWW-Authenticate с перечнем принятых схем (Bearer, Basic, Digest, Negotiate); без этого ответ технически некорректен. 405 Method Not Allowed должен содержать заголовок Allow со списком поддерживаемых методов. 429 Too Many Requests, 503 Service Unavailable и 301/307/308 с Retry-After позволяют серверу сигнализировать задержку либо в секундах (Retry-After: 120), либо в формате HTTP-date (Retry-After: Wed, 21 Oct 2025 07:28:00 GMT) согласно RFC 9110 раздел 10.2.3. RFC 9110 объявляет устаревшими 305 Use Proxy и 306 (зарезервирован/не используется), сохраняет 418 I'm a teapot как документированный шуточный код из RFC 2324 / RFC 7168 и реорганизует 1xx так, что только 100 Continue и 101 Switching Protocols обязательны на уровне HTTP/1.1; 102 Processing и 103 Early Hints (RFC 8297) — необязательные расширения, которые в основном проявляются через логику CDN-узлов.
- Нормативный источник: RFC 9110 (HTTP Semantics, июнь 2022) заменяет RFC 7230-7235; расширения находятся в RFC 9111 (Caching), 9112 (HTTP/1.1 wire format), 9113 (HTTP/2), 9114 (HTTP/3)
- Неизвестные коды деградируют до кода класса (x00): неизвестный 4xx кешируется и обрабатывается как 400, неизвестный 5xx как 500 — именно это делает первую цифру контрактом
- Сохранение метода: 301/302 исторически допускают перезапись POST → GET (закреплено после расхождений браузеров начала 1990-х); 307/308 требуют воспроизведения того же метода и тела — используйте 308 для постоянного перемещения API-эндпоинтов
- 401 Unauthorized должен содержать WWW-Authenticate; 405 Method Not Allowed должен содержать Allow; отсутствие этих заголовков является нарушением спецификации, ломающим корректные HTTP-клиенты
- Retry-After (RFC 9110 раздел 10.2.3) при 429/503/301/307/308: принимает либо delta-seconds (Retry-After: 120), либо HTTP-date (Retry-After: Wed, 21 Oct 2025 07:28:00 GMT) — клиенты должны парсить обе формы
- Условное кеширование: 304 Not Modified отвечает на совпадение If-None-Match / If-Modified-Since без тела; 206 Partial Content отвечает на Range заголовком Content-Range и либо частичным телом, либо документом multipart/byteranges
- RFC 9110 объявляет устаревшими 305 Use Proxy и 306 (зарезервирован), сохраняет 418 I'm a teapot из RFC 2324 / RFC 7168 как шутку и рассматривает 102 Processing / 103 Early Hints (RFC 8297) как необязательные расширения 1xx, которые многие прокси удаляют
Примеры
2xx Успех - 200 OK и 204 No Content
200 OK GET /api/users -> возвращено тело ответа
201 Created POST /api/posts -> новый ресурс по заголовку Location
204 No Content DELETE /api/posts/42 -> успех, пустое тело
206 Partial Range-запрос для потокового видео или возобновляемых загрузок
RFC: RFC 7231 раздел 6.3 определяет коды успеха 2xx3xx Перенаправления - 301 vs 302 vs 304
301 Moved Permanently -> безопасно для SEO, браузеры кешируют новый URL навсегда
302 Found -> временное перенаправление, не кешировать целевой URL
304 Not Modified -> кешированная копия всё ещё актуальна (совпадение ETag/Last-Modified)
307 Temporary Redirect -> как 302, но метод НЕ должен меняться (POST остаётся POST)
308 Permanent Redirect -> как 301, но сохраняет метод запроса
RFC: RFC 7231 раздел 6.4 определяет коды перенаправления 3xx
RFC: RFC 7232 раздел 4.1 определяет семантику 304 Not Modified4xx Ошибки клиента - аутентификация vs права
400 Bad Request Некорректный JSON, отсутствует обязательное поле
401 Unauthorized Отсутствует или недействителен токен - вызывающий должен пройти аутентификацию
403 Forbidden Аутентифицирован, но доступ к ресурсу не разрешён
404 Not Found Ресурс не существует (или притворяется, что не существует, в целях безопасности)
409 Conflict Дубликат ключа, несоответствие версий оптимистичной блокировки
429 Too Many Reqs Достигнут лимит частоты - см. заголовок Retry-After
RFC: RFC 7231 раздел 6.5 определяет коды ошибок клиента 4xx
RFC: RFC 6585 раздел 4 определяет 429 Too Many Requests5xx Ошибки сервера - отладка апстрима
500 Internal Server Error Необработанное исключение в коде приложения - проверьте логи
502 Bad Gateway Nginx/апстрим получил недопустимый ответ от бэкенда
503 Service Unavailable Обслуживание, перегрузка или загрузка приложения
504 Gateway Timeout Апстрим не ответил в пределах таймаута прокси
RFC: RFC 7231 раздел 6.6 определяет коды ошибок сервера 5xx
Быстрая сортировка: 5xx = наша вина, 4xx = вина вызывающегоРеальная сессия curl с несколькими кодами
$ curl -I https://example.com/old-page
HTTP/2 301
location: https://example.com/new-page
$ curl -I https://example.com/admin
HTTP/2 401
www-authenticate: Bearer realm="api"
$ curl -X POST https://example.com/api/posts -d '{}'
HTTP/2 422
content-type: application/json
Примечание: 422 Unprocessable Entity - расширение WebDAV (RFC 4918), используемое для ошибок валидацииЧасто задаваемые вопросы
Что означают классы 1xx, 2xx, 3xx, 4xx и 5xx?
1xx — информационные (на практике встречаются редко). 2xx — запрос выполнен успешно. 3xx — перенаправление: клиенту нужно перейти на другой URL. 4xx — проблема на стороне клиента (некорректный запрос, нет авторизации, ресурс не найден). 5xx — проблема на стороне сервера (запрос выглядел нормально, но сервер не справился). Читая лог, всегда сначала смотрите класс.
В чём разница между 301 и 302?
301 Moved Permanently сообщает клиентам и поисковикам, что ресурс переехал навсегда — браузеры агрессивно кэшируют этот редирект, а ссылочный вес SEO передаётся на новый URL. 302 Found — временный редирект; клиенты не должны кэшировать его надолго. Если нужен постоянный редирект с сохранением метода запроса, используйте 308; для временного с тем же ограничением — 307.
Когда возвращать 401, а когда 403?
401 Unauthorized означает, что клиент не аутентифицирован или прислал неверные учётные данные — в ответе должен быть заголовок WWW-Authenticate. 403 Forbidden означает, что сервер понимает, кто перед ним, и всё равно отказывается отдавать ресурс. Авторизация решает проблему 401; от 403 она не поможет.
Какой код возвращать для исчезнувших ресурсов — 404 или 410?
404 Not Found означает «не могу найти; возможно, существует где-то ещё или появится позже». 410 Gone означает «этот ресурс был, его удалили намеренно, больше его не ищите». Поисковики выкидывают URL с 410 из индекса быстрее, чем с 404, поэтому 410 — правильный выбор для убранных страниц, которые вы не хотите видеть в новых обходах.
Как читать статус-код при отладке API?
Сначала смотрите класс (4xx или 5xx подскажет, на чьей стороне проблема), затем конкретный код, потом тело ответа. В теле обычно лежит реальное сообщение об ошибке и внутренний код, а HTTP-статус — лишь категория. Параллельно изучайте заголовки: Retry-After, WWW-Authenticate, Location.
Вредят ли SEO коды, отличные от 2xx?
Какие-то да, какие-то нет. Долгие 5xx сигнализируют о ненадёжности сайта, и поисковики со временем сократят частоту обхода. Редиректы 301/308 передают ссылочный вес, а 302/307 — нет. 410 вычищает страницы из индекса, тогда как 404 ещё долго висят. 200 со «soft-404» в теле (страница «не найдено», возвращающая 200) хуже для SEO, чем настоящий 404, потому что засоряет индекс пустыми страницами.
Зачем нужны 418, 451 и другие необычные коды?
418 «I'm a teapot» — знаменитая первоапрельская шутка из RFC 2324, в продакшене ему делать нечего. 451 Unavailable For Legal Reasons означает блокировку из-за юридического требования (название — отсылка к «451 градусу по Фаренгейту» Брэдбери). 429 Too Many Requests сигнализирует о rate-limit и должен сопровождаться заголовком Retry-After. 503 Service Unavailable — правильный код для плановых работ.