Справочник по кодам состояния 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
Сервер не может обработать запрос, потому на нем недостаточно места для хранения данных. Требует вмешательства администратора для освобождения места на диске.