Коды статуса: 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-клиентам) корректно обрабатывать ответы без парсинга тела.
Проверь себя
- Чем 401 отличается от 403?
- Какой код вернуть при успешном создании ресурса через POST?
- 301 и 302 — в чём разница?
- 401 — «ты не представился, авторизуйся». 403 — «я знаю кто ты, но доступа нет». Повторный запрос с авторизацией исправит 401, но не 403.
- 201 Created с заголовком
Location, указывающим URL созданного ресурса. - 301 — постоянное перенаправление (браузер запоминает), 302 — временное (каждый раз заново идёт по старому адресу).
Что унести с урока
- Коды статуса сгруппированы: 2xx успех, 3xx перенаправление, 4xx ошибка клиента, 5xx ошибка сервера.
- Самые частые: 200 OK, 201 Created, 301/302 (редирект), 400, 401, 403, 404, 500, 502, 503.
- Правильные коды статуса улучшают работу браузеров, прокси и поисковиков.
- В DevTools Network всегда проверяй статусы ответов.
В следующем уроке — детальный обзор ключевых HTTP-заголовков и их роли.