Menu
Русский

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

Поисковая справка по всем кодам состояния HTTP с понятными объяснениями.

Последнее обновление

  • 100Continue

    1xx

    Получена начальная часть запроса; клиенту следует продолжить отправку тела.

  • 101Switching Protocols

    1xx

    Сервер согласен сменить протокол (например, с HTTP/1.1 на WebSocket).

  • 102Processing

    1xx

    WebDAV — запрос принят, но ещё не завершён.

  • 103Early Hints

    1xx

    Используется с заголовком Link для предзагрузки ресурсов до финального ответа.

  • 200OK

    2xx

    Запрос выполнен успешно. Точный смысл зависит от метода.

  • 201Created

    2xx

    Запрос успешен, создан новый ресурс.

  • 202Accepted

    2xx

    Запрос принят к обработке, но ещё не выполнен (асинхронная работа).

  • 203Non-Authoritative Information

    2xx

    Возвращённые метаданные получены от преобразующего прокси, а не от исходного сервера.

  • 204No Content

    2xx

    Запрос успешен, но тело не возвращается.

  • 205Reset Content

    2xx

    Указывает клиенту сбросить представление документа, отправившего запрос (напр. очистить форму).

  • 206Partial Content

    2xx

    Используется в ответ на Range-запрос — тело содержит только запрошенный диапазон байт.

  • 300Multiple Choices

    3xx

    Ресурс имеет несколько представлений; клиент должен выбрать одно.

  • 301Moved Permanently

    3xx

    У ресурса новый постоянный URL. Поисковики обновят индекс.

  • 302Found

    3xx

    Ресурс временно по другому URL. Если нужно сохранить метод, используйте 307.

  • 303See Other

    3xx

    После POST перенаправляет клиента на получение результата через GET (Post/Redirect/Get).

  • 304Not Modified

    3xx

    Кэшированная копия ещё актуальна — отправляется в ответ на условные GET (ETag / If-Modified-Since).

  • 307Temporary Redirect

    3xx

    Как 302, но метод запроса не должен меняться при переходе.

  • 308Permanent Redirect

    3xx

    Как 301, но метод запроса не должен меняться при переходе.

  • 400Bad Request

    4xx

    Сервер не может или не желает обработать запрос из-за ошибки клиента (некорректный синтаксис, неверная структура).

  • 401Unauthorized

    4xx

    Требуется аутентификация — она не прошла или не была предоставлена. (Несмотря на название, речь об аутентификации, а не авторизации.)

  • 402Payment Required

    4xx

    Зарезервировано на будущее. Иногда используется API, чтобы указать на превышение платной квоты.

  • 403Forbidden

    4xx

    Сервер понял запрос, но отказывается его авторизовать. Повторная аутентификация не поможет.

  • 404Not Found

    4xx

    Сервер не может найти запрошенный ресурс.

  • 405Method Not Allowed

    4xx

    Сервер знает метод запроса, но целевой ресурс его не поддерживает.

  • 406Not Acceptable

    4xx

    Сервер не может вернуть ответ, удовлетворяющий заголовкам Accept клиента.

  • 407Proxy Authentication Required

    4xx

    Как 401, но аутентификация требуется для прокси.

  • 408Request Timeout

    4xx

    Сервер не дождался запроса (таймаут).

  • 409Conflict

    4xx

    Запрос конфликтует с текущим состоянием ресурса (напр. конфликт версий).

  • 410Gone

    4xx

    Ресурс окончательно удалён, перенаправления нет.

  • 411Length Required

    4xx

    Сервер требует заголовок Content-Length.

  • 412Precondition Failed

    4xx

    Предусловие в заголовках запроса (напр. If-Match) не выполнено сервером.

  • 413Payload Too Large

    4xx

    Тело запроса превышает допустимый сервером размер.

  • 414URI Too Long

    4xx

    URI длиннее, чем сервер готов интерпретировать.

  • 415Unsupported Media Type

    4xx

    Тело запроса использует медиа-тип, который не поддерживается сервером или ресурсом.

  • 416Range Not Satisfiable

    4xx

    Заголовок Range запрашивает часть файла за его пределами.

  • 418I'm a teapot

    4xx

    Первоапрельская шутка из RFC 2324. Возвращается серверами, отказывающимися варить кофе.

  • 421Misdirected Request

    4xx

    Запрос отправлен серверу, неспособному ответить (напр. не та HTTP/2-сессия).

  • 422Unprocessable Entity

    4xx

    Запрос корректен по форме, но содержит семантические ошибки (часто используется API при ошибках валидации).

  • 423Locked

    4xx

    WebDAV — запрошенный ресурс заблокирован.

  • 425Too Early

    4xx

    Сервер не хочет обрабатывать запрос, который может быть воспроизведён повторно.

  • 426Upgrade Required

    4xx

    Клиент должен перейти на другой протокол (напр. TLS), чтобы завершить запрос.

  • 428Precondition Required

    4xx

    Сервер требует, чтобы запрос был условным (помогает избежать «потерянного обновления»).

  • 429Too Many Requests

    4xx

    Клиент отправил слишком много запросов за заданное время (rate limiting).

  • 431Request Header Fields Too Large

    4xx

    Сервер отказывает: одно из полей заголовка — или заголовки в целом — слишком велики.

  • 451Unavailable For Legal Reasons

    4xx

    Ресурс недоступен по юридическим причинам (название отсылает к «451 градусу по Фаренгейту»).

  • 500Internal Server Error

    5xx

    Сервер встретил неожиданное условие. Универсальная 5xx-ошибка.

  • 501Not Implemented

    5xx

    Сервер не распознаёт метод запроса.

  • 502Bad Gateway

    5xx

    Сервер-шлюз получил недопустимый ответ от вышестоящего сервера.

  • 503Service Unavailable

    5xx

    Сервер не готов обработать запрос — обычно перегружен или в обслуживании.

  • 504Gateway Timeout

    5xx

    Сервер-шлюз не дождался ответа от вышестоящего сервера.

  • 505HTTP Version Not Supported

    5xx

    Сервер не поддерживает указанную в запросе версию HTTP.

  • 507Insufficient Storage

    5xx

    WebDAV — сервер не может сохранить представление, нужное для обработки запроса.

  • 508Loop Detected

    5xx

    WebDAV — сервер обнаружил бесконечный цикл при обработке.

  • 511Network Authentication Required

    5xx

    Клиенту необходимо пройти аутентификацию для доступа к сети (captive-портал).

Что такое HTTP-коды состояния?

HTTP-коды состояния — это трёхзначные числа в начале каждого ответа сервера, которые коротко говорят, что произошло. По ним браузеры, клиенты, прокси и CDN решают, кэшировать ли ответ, перенаправлять ли запрос, повторять ли его и показывать ли пользователю ошибку.

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

На практике большинство приложений обходится небольшим набором: 200, 201, 204, 301, 302, 304, 400, 401, 403, 404, 409, 422, 429, 500, 502, 503. Понимать, что *означает* каждый — и в чём разница между 401 Unauthorized и 403 Forbidden или между 301 Moved Permanently и 302 Found — как раз то, что отличает крепкого backend- или API-разработчика.

Что вы узнаете, пользуясь этим справочником

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

Как пользоваться справочником шаг за шагом

  1. Ищите по коду или названию

    Введите число (404, 429) или ключевое слово (auth, redirect, rate limit) — список кодов отфильтруется на лету.

  2. Фильтруйте по классу

    Чипы классов (1xx, 2xx, 3xx, 4xx, 5xx) помогают сузить список, когда вы скорее изучаете тему, чем ищете конкретный код.

  3. Читайте объяснение по-человечески

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

  4. Сравнивайте близкие коды

    Используйте перекрёстные ссылки между путаными парами (401 vs 403, 301 vs 302), чтобы выбрать правильный код для своего API.

Классы HTTP-кодов состояния

Пять классов HTTP-кодов и их смысл в двух словах. Определены в RFC 9110 и зарегистрированы в реестре HTTP-кодов IANA.

КлассСмыслЧастые коды
1xx ИнформационныеЗапрос получен, идёт обработка100, 101, 103
2xx УспехЗапрос выполнен успешно200, 201, 204, 206
3xx ПеренаправлениеИщите ресурс по другому адресу301, 302, 304, 307, 308
4xx Ошибка клиентаС запросом что-то не так400, 401, 403, 404, 409, 422, 429
5xx Ошибка сервераСервер не смог обработать корректный запрос500, 502, 503, 504

HTTP-коды, которые стоит знать

200 OK vs 201 Created vs 204 No Content

200 OK

Стандартный ответ «всё прошло хорошо» — с телом ответа.

201 Created

В результате запроса создан новый ресурс — обычно после POST.

204 No Content

Успех, но без тела. Часто используется после DELETE или PUT, когда возвращать нечего.

Все три — коды успеха, разница только в том, что несёт ответ. 201 должен возвращать заголовок Location со ссылкой на созданный ресурс; 204 по определению пустой.

301 Moved Permanently vs 302 Found

301

Постоянный редирект. Браузеры и поисковики его запоминают, старый URL фактически мёртв.

302

Временный редирект. Браузеры каждый раз заново обращаются к исходному URL, закладки остаются на нём же.

301 уместен, когда ресурс действительно переехал (ребрендинг, переработка URL-структуры). 302 — для краткосрочных редиректов: A/B-тесты, перенаправления при логине, страница «на техобслуживании».

401 Unauthorized vs 403 Forbidden

401

Вы не аутентифицированы. Сервер не знает, кто вы.

403

Сервер знает, кто вы, но прав на этот ресурс у вас нет.

Если с другими учётными данными запрос мог бы сработать — возвращайте 401. Если никакие данные не помогут (ресурс просто закрыт для этого пользователя) — возвращайте 403.

500 vs 502 vs 503 vs 504

500

Общая ошибка сервера — где-то в коде вылетело необработанное исключение.

502

Bad gateway — прокси перед приложением (CDN, балансировщик) не смог достучаться до апстрима.

503

Service unavailable — сервер жив, но перегружен или находится на техобслуживании.

504

Gateway timeout — прокси достучался до апстрима, но не получил ответ вовремя.

Все четыре — ошибки сервера, но рассказывают разные истории при отладке. 500 — это ваш код; 502 и 504 намекают на проблемы в сети между сервисами; 503 — про нехватку ресурсов.

Типичные ошибки при работе с HTTP-кодами

  • Отдавать 200 OK с телом {"error": "..."}. Код состояния — часть контракта: используйте подходящий (400, 404, 500), чтобы клиенты могли ветвить логику именно по нему.
  • Использовать 401 для ошибок прав доступа. 401 — это про аутентификацию, а отказ в правах — это 403.
  • Возвращать 200 для только что созданных ресурсов вместо 201 с заголовком Location.

FAQ по HTTP-кодам состояния

Что означает HTTP 404?
404 Not Found означает, что сервер понял запрос, но ресурса по этому URL не существует. Чаще всего путь указан неверно, ресурс удалён или URL содержит опечатку.
Чем отличаются 401 и 403?
401 Unauthorized — вы не аутентифицированы, сервер не знает, кто вы. 403 Forbidden — вы аутентифицированы, но прав на этот ресурс у вас нет. Другие учётные данные могут починить 401, но не 403.
Чем отличаются 301 и 302?
301 Moved Permanently — постоянный редирект, браузеры и поисковики обновляют свои записи. 302 Found — временный, клиенты продолжают ходить по исходному URL. 301 — для постоянных переездов, 302 — для временных обходных путей.
Что означает HTTP 500?
500 Internal Server Error — общая ошибка на стороне сервера, обычно происходит, когда наверх всплывает необработанное исключение. Клиент тут ни при чём — сервер не справился с корректным запросом.
Нужно ли всегда возвращать конкретный код?
Да. Универсальный 200 OK на ошибки или 500 на всё подряд делают API неудобным. Выбирайте наиболее точный подходящий код — клиенты, прокси, мониторинг и логика повторов смотрят именно на него.
Что означает HTTP 429?
429 Too Many Requests отдаётся, когда клиент упёрся в rate limit. В ответе стоит указывать заголовок Retry-After, чтобы клиент знал, когда можно повторить запрос.

Узнать больше

Другие инструменты разработчика

Учитесь программировать с Coddy

НАЧАТЬ