Справочник по кодам состояния HTTP

Коды состояния HTTP — это трехзначные числа, которые сервер возвращает в ответ на запрос браузера или другого клиента. Они являются важнейшим инструментом взаимодействия в вебе и сообщают, был ли запрос успешно обработан, требуется ли перенаправление, или же произошла ошибка. Понимание этих кодов необходимо веб-разработчикам, SEO-специалистам и системным администраторам для отладки, мониторинга и оптимизации веб-ресурсов. Все коды разделены на пять классов, определяемых первой цифрой.

1xx: Информационные коды

Коды этой группы информируют о процессе обработки запроса. Они являются промежуточными и не означают ни успеха, ни ошибки.

100 - Continue

Сервер сообщает клиенту, что получил начальные заголовки запроса и клиент может продолжать передавать тело запроса (если оно есть). Используется для оптимизации, чтобы избежать передачи больших данных на заведомо невалидный запрос.

101 - Switching Protocols

Сервер соглашается переключить протоколы, как запросил клиент. Например, этот код используется для перехода с HTTP/1.1 на WebSocket.

102 - Processing

Сервер получил запрос и обрабатывает его, но ответ еще не готов. Это предотвращает таймаут клиента, пока сервер выполняет длительную операцию (например, обрабатывает большой файл).

2xx: Коды успеха

Эта группа указывает на то, что запрос был успешно получен, понят и обработан.

200 - OK

Стандартный код успешного ответа. Запрос выполнен успешно, и сервер возвращает запрошенные данные (например, HTML-страницу или содержимое файла).

201 - Created

Запрос выполнен успешно и в результате был создан новый ресурс (например, после отправки формы методом POST). Ответ обычно содержит заголовок Location с URI созданного ресурса.

202 - Accepted

Запрос был принят на обработку, но она еще не завершена. Это часто используется для асинхронных операций, которые выполняются на сервере без непосредственной связи с клиентом.

204 - No Content

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

206 - Partial Content

Сервер возвращает только часть данных. Используется при загрузке больших файлов по частям (например, при возобновлении загрузки с разрыва или для потокового видео).

3xx: Коды перенаправления

Эти коды указывают, что для завершения запроса клиент должен предпринять дополнительные действия, обычно – перейти по другому адресу.

301 - Moved Permanently

Запрошенный ресурс был постоянно перемещен на новый URI. Все последующие запросы должны использовать новый адрес. Имеет большое значение для SEO, так как передает вес старой страницы новой.

302 - Found

Запрошенный ресурс временно доступен по другому URI. Браузер должен перейти по новому адресу, но для будущих запросов продолжать использовать оригинальный URL. Не передает SEO-вес.

304 - Not Modified

Используется для кеширования. Сервер сообщает клиенту, что запрашиваемая им версия ресурса не изменялась с момента последнего запроса. Клиент может смело использовать кешированную версию.

307 - Temporary Redirect

Аналогичен коду 302, но с важным уточнением: метод и тело исходного запроса не должны изменяться при повторном запросе. Более безопасная версия 302-го кода.

308 - Permanent Redirect

Аналогичен коду 301, но также гарантирует, что метод и тело запроса останутся неизменными. Более строгая и предсказуемая версия 301-го кода.

4xx: Клиентские ошибки

Коды этой группы означают, что ошибка произошла по вине клиента – запрос содержит некорректный синтаксис или не может быть выполнен.

400 - Bad Request

Сервер не может обработать запрос из-за неверного синтаксиса. Частая причина – неверно сформированные заголовки или тело запроса.

401 - Unauthorized

Для доступа к ресурсу требуется аутентификация. Клиент должен представиться, отправив корректные учетные данные (например, логин и пароль).

403 - Forbidden

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

404 - Not Found

Самый узнаваемый код ошибки. Сервер не может найти запрашиваемый ресурс. Возможные причины: неверная ссылка, страница удалена или опечатка в URL.

405 - Method Not Allowed

Метод запроса (GET, POST и т.д.) известен серверу, но не поддерживается для данного ресурса. Например, попытка отправить POST-запрос на URL, который предназначен только для чтения (GET).

408 - Request Timeout

Сервер решил закрыть соединение из-за того, что клиент не отправил полный запрос за отведенное время.

409 - Conflict

Запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса. Часто возникает при одновременном редактировании одних и тех же данных (например, конфликт версий в системе контроля версий).

410 - Gone

Ресурс больше не доступен и был удален навсегда. В отличие от 404, здесь подразумевается, что страница существовала, но была целенаправленно удалена.

429 - Too Many Requests

Клиент отправил слишком много запросов за короткий промежуток времени ("Rate Limiting"). Сервер таким образом защищается от DDoS-атак или злоупотреблений.

5xx: Серверные ошибки

Эти коды означают, что сервер не смог выполнить допустимый запрос по своей вине. Проблема находится на стороне сервера.

500 - Internal Server Error

Общий код ответа на непредвиденную ошибку сервера, когда не подходит более конкретная ошибка. Часто вызывается багами в коде веб-приложения (например, необработанным исключением в PHP или Python).

501 - Not Implemented

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

502 - Bad Gateway

Сервер, выступая в роли шлюза или прокси, получил неверный ответ от вышестоящего сервера. Частая проблема при неправильной настройке Nginx/Apache и бэкенд-приложения (PHP-FPM).

503 - Service Unavailable

Сервер временно не может обрабатывать запросы due to перегрузки или планового технического обслуживания. Это временное состояние, и сервер обычно сообщает, когда стоит повторить запрос.

504 - Gateway Timeout

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

507 - Insufficient Storage

Сервер не может обработать запрос, потому на нем недостаточно места для хранения данных. Требует вмешательства администратора для освобождения места на диске.