Коды статуса: 1xx, 2xx, 3xx, 4xx, 5xx

Коды статуса: 1xx, 2xx, 3xx, 4xx, 5xx

Каждый HTTP-ответ начинается с трёхзначного кода статуса. Это первое, на что смотрит браузер: успех, ошибка или нужно перейти по другому адресу. Разберём все пять категорий и самые важные коды внутри каждой.

1xx — Informational (информационные)

Промежуточные ответы: сервер получил запрос и продолжает обработку. В повседневной работе встречаются редко:

  • 100 Continue. Клиент отправил заголовки (большого POST/PUT) и ждёт разрешения сервера отправить тело. Сервер отвечает: «Давай тело».
  • 101 Switching Protocols. Сервер согласен переключить протокол (например, с HTTP на WebSocket).

2xx — Success (успех)

Запрос получен, понят и успешно обработан:

  • 200 OK. Стандартный успех. Для GET — «вот данные», для PUT/PATCH — «обновил».
  • 201 Created. Ресурс создан (обычно после POST). Ответ должен содержать заголовок Location с URL нового ресурса.
  • 204 No Content. Запрос обработан, но тела ответа нет. Типично для DELETE и для PATCH (обновил, но ничего не возвращает).
  • 206 Partial Content. Ответ содержит только часть данных. Используется для докачки файлов и пагинации с заголовком Range.

3xx — Redirection (перенаправление)

Ресурс находится по другому адресу. Заголовок Location указывает новый URL:

  • 301 Moved Permanently. Ресурс переехал навсегда. Браузер запоминает новый адрес и в следующий раз идёт сразу туда. SEO: поисковики переносят вес ссылок на новый URL.
  • 302 Found (Moved Temporarily). Временное перенаправление. Браузер не запоминает новый адрес и в следующий раз снова запросит старый.
  • 304 Not Modified. Ресурс не изменился с момента последнего запроса — используй кэш. Работает в паре с If-Modified-Since и ETag. Не имеет тела.
  • 307/308. То же, что 302/301, но гарантируют, что метод запроса не изменится (POST останется POST при перенаправлении).

4xx — Client Error (ошибка клиента)

Клиент отправил что-то не то:

  • 400 Bad Request. Сервер не может понять запрос (синтаксическая ошибка, невалидный JSON).
  • 401 Unauthorized. Требуется аутентификация. Ответ должен содержать WWW-Authenticate заголовок. На практике часто путают с 403.
  • 403 Forbidden. Сервер понял запрос, но отказывается его выполнять. Клиент аутентифицирован, но не имеет доступа. В отличие от 401, повторный запрос с авторизацией не поможет.
  • 404 Not Found. Ресурс не найден. Самый узнаваемый HTTP-статус.
  • 405 Method Not Allowed. Метод не поддерживается для этого URL (например, DELETE /homepage).
  • 429 Too Many Requests. Клиент превысил лимит запросов (rate limiting). Сервер обычно указывает время ожидания в заголовке Retry-After.

5xx — Server Error (ошибка сервера)

Сервер не справился с обработкой валидного запроса:

  • 500 Internal Server Error. Общая ошибка сервера: упал код, база не отвечает, кончилась память.
  • 502 Bad Gateway. Промежуточный сервер (nginx, прокси) получил некорректный ответ от upstream-сервера.
  • 503 Service Unavailable. Сервер временно недоступен (перегрузка, обслуживание). Обычно с Retry-After.
  • 504 Gateway Timeout. Промежуточный сервер не дождался ответа от upstream за отведённое время.

Как использовать на практике

При разработке и отладке: всегда проверяй код статуса ответа. Во вкладке Network DevTools видно все ответы и их статусы. Красные цифры (4xx/5xx) — повод разбираться.

При проектировании API: выбирай правильные статусы. Не возвращай 200 OK с телом {"error": "not found"} — используй 404 Not Found. Правильные статусы позволяют клиентам (браузерам, прокси, HTTP-клиентам) корректно обрабатывать ответы без парсинга тела.

Проверь себя

  1. Чем 401 отличается от 403?
  2. Какой код вернуть при успешном создании ресурса через POST?
  3. 301 и 302 — в чём разница?
<details> <summary>Ответы</summary>
  1. 401 — «ты не представился, авторизуйся». 403 — «я знаю кто ты, но доступа нет». Повторный запрос с авторизацией исправит 401, но не 403.
  2. 201 Created с заголовком Location, указывающим URL созданного ресурса.
  3. 301 — постоянное перенаправление (браузер запоминает), 302 — временное (каждый раз заново идёт по старому адресу).
</details>

Что унести с урока

  • Коды статуса сгруппированы: 2xx успех, 3xx перенаправление, 4xx ошибка клиента, 5xx ошибка сервера.
  • Самые частые: 200 OK, 201 Created, 301/302 (редирект), 400, 401, 403, 404, 500, 502, 503.
  • Правильные коды статуса улучшают работу браузеров, прокси и поисковиков.
  • В DevTools Network всегда проверяй статусы ответов.

В следующем уроке — детальный обзор ключевых HTTP-заголовков и их роли.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике