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

Полный справочник по кодам состояния HTTP с описаниями и рекомендациями

HTTP-коды состояния указывают, была ли успешно выполнена конкретная операция HTTP-запроса. Ответы сгруппированы в пять классов:

  • 1xx (Информационные): запрос принят, процесс продолжается
  • 2xx (Успешные): запрос успешно получен, понят и обработан
  • 3xx (Перенаправления): для выполнения запроса необходимы дальнейшие действия
  • 4xx (Ошибки клиента): запрос содержит синтаксическую ошибку или не может быть выполнен
  • 5xx (Ошибки сервера): сервер не смог выполнить корректный запрос

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

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

Код Название Описание
100 Continue Сервер получил заголовки запроса и клиент должен продолжить отправку тела запроса. Используется при отправке больших запросов, чтобы клиент мог узнать, принимает ли сервер запрос, до отправки большого объема данных.
101 Switching Protocols Сервер принимает запрос клиента на изменение протокола, указанного в заголовке Upgrade, и переключается на него. Часто используется для перехода на WebSocket.
102 Processing Сервер получил и обрабатывает запрос, но пока не может предоставить ответ. Используется для предотвращения таймаутов клиента при обработке длительных запросов.
103 Early Hints Используется для отправки предварительных заголовков ответа до окончательного HTTP-ответа. Позволяет браузеру начать предварительную загрузку ресурсов, пока сервер готовит полный ответ.

2xx - Успешные коды

Успешные коды указывают на то, что запрос клиента был успешно получен, понят и обработан сервером.

Код Название Описание
200 OK Стандартный ответ для успешных HTTP-запросов. Фактический ответ зависит от метода запроса: GET — ресурс получен и передан в теле сообщения; HEAD — заголовки ответа получены без тела сообщения; POST — ресурс, описывающий результат действия, передан в теле сообщения.
201 Created Запрос выполнен успешно и в результате был создан новый ресурс. Обычно используется после выполнения запросов PUT или POST. Ответ обычно содержит заголовок Location с URI нового ресурса.
202 Accepted Запрос принят на обработку, но обработка еще не завершена. Используется для асинхронных операций. Клиент может проверить статус запроса позже.
203 Non-Authoritative Information Сервер успешно обработал запрос, но возвращает информацию, которая может быть получена из другого источника. Часто используется прокси-серверами, когда они модифицируют ответ от исходного сервера.
204 No Content Сервер успешно обработал запрос, но не возвращает никакого содержимого. Часто используется для запросов, которые должны только изменить состояние на сервере, но не требуют возврата данных.
205 Reset Content Сервер успешно обработал запрос, но не возвращает содержимое. В отличие от 204, этот код требует от клиента сбросить представление документа (например, очистить форму).
206 Partial Content Сервер успешно обработал частичный GET-запрос, возвращая только часть запрошенного содержимого. Используется для возобновления прерванных загрузок или разделения загрузки на несколько одновременных потоков.
207 Multi-Status Предоставляет статус для нескольких независимых операций. Используется в протоколах WebDAV и других, где одна операция может затрагивать несколько ресурсов.
208 Already Reported Используется в коллекции WebDAV, чтобы избежать перечисления членов коллекции, которые уже были перечислены в предыдущих частях ответа.
226 IM Used Сервер выполнил GET-запрос для ресурса и ответ представляет собой результат применения одного или нескольких преобразований экземпляра к текущему экземпляру. Используется для оптимизации передачи данных.

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

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

Код Название Описание
300 Multiple Choices Запрошенный ресурс имеет несколько представлений, и клиент должен выбрать одно из них. Например, сервер может предложить разные форматы файла или языковые версии документа.
301 Moved Permanently Запрошенный ресурс окончательно перемещен на новый URL, указанный в заголовке Location. Клиенты должны обновить свои ссылки, поисковые системы обновят индекс. Все будущие запросы должны использовать новый URL.
302 Found Запрошенный ресурс временно доступен по другому URL, указанному в заголовке Location. В отличие от 301, клиенты не должны обновлять свои ссылки, так как ресурс может вернуться на исходный URL. Часто используется при временных перенаправлениях.
303 See Other Ответ на запрос находится по другому URL и должен быть получен с помощью GET-запроса. Часто используется после POST-запросов для перенаправления на страницу с результатами. Клиент всегда должен использовать GET для перенаправления, независимо от исходного метода.
304 Not Modified Указывает, что запрошенный ресурс не изменился с момента последнего запроса. Используется для кэширования, позволяя клиенту использовать локальную копию ресурса. Сервер не отправляет тело ответа, экономя трафик.
307 Temporary Redirect Аналогично 302, но клиент должен использовать тот же метод запроса при перенаправлении. Если исходный запрос был POST, то и перенаправленный запрос должен быть POST. Это более строгая версия 302, которая гарантирует сохранение метода запроса.
308 Permanent Redirect Аналогично 301, но клиент должен использовать тот же метод запроса при перенаправлении. Если исходный запрос был POST, то и перенаправленный запрос должен быть POST. Это более строгая версия 301, которая гарантирует сохранение метода запроса.

4xx - Ошибки клиента

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

Код Название Описание
400 Bad Request Сервер не может обработать запрос из-за ошибки клиента (например, неправильный синтаксис запроса, недопустимые параметры или неверная маршрутизация запроса).
401 Unauthorized Для доступа к запрошенному ресурсу требуется аутентификация. Ответ должен включать заголовок WWW-Authenticate с информацией о том, как аутентифицироваться.
402 Payment Required Зарезервирован для будущего использования. Изначально предназначался для цифровых платежных систем, но редко используется в этом контексте.
403 Forbidden Сервер понял запрос, но отказывается его авторизовать. В отличие от 401, аутентификация не поможет. Обычно означает, что у пользователя нет необходимых прав доступа.
404 Not Found Сервер не может найти запрошенный ресурс. Может означать, что URL неверен или ресурс больше не существует. Один из самых известных HTTP-кодов состояния.
405 Method Not Allowed Метод запроса известен серверу, но отключен и не может быть использован для запрошенного ресурса. Ответ должен включать заголовок Allow со списком разрешенных методов.
406 Not Acceptable Запрошенный ресурс не может генерировать контент, соответствующий заголовкам Accept, отправленным в запросе (например, клиент запросил JSON, но сервер может предоставить только XML).
407 Proxy Authentication Required Аналогично 401, но указывает, что клиент должен сначала аутентифицироваться с прокси-сервером. Прокси должен вернуть заголовок Proxy-Authenticate.
408 Request Timeout Сервер истек время ожидания запроса от клиента. Клиент может повторить запрос без изменений позже.
409 Conflict Запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса. Часто возникает при одновременных обновлениях или при попытке создать ресурс, который уже существует.
410 Gone Запрошенный ресурс больше недоступен и не будет доступен в будущем. В отличие от 404, этот код указывает на преднамеренное и постоянное удаление ресурса.
411 Length Required Сервер отказывается принять запрос без определенного заголовка Content-Length.
412 Precondition Failed Сервер не соответствует одному из предварительных условий, указанных клиентом в заголовках запроса. Часто используется для условных GET-запросов с заголовками If-Match или If-None-Match.
413 Payload Too Large Размер запроса превышает лимит, установленный сервером. Сервер может закрыть соединение или вернуть заголовок Retry-After.
414 URI Too Long URL запроса длиннее, чем сервер готов интерпретировать. Часто возникает при слишком длинных запросах GET с большим количеством параметров.
415 Unsupported Media Type Формат запроса не поддерживается сервером для запрошенного метода и ресурса. Например, клиент отправляет данные в формате XML, когда сервер ожидает JSON.
416 Range Not Satisfiable Сервер не может удовлетворить диапазон, запрошенный клиентом в заголовке Range. Обычно это происходит, когда запрошенный диапазон не перекрывается с размером ресурса.
417 Expectation Failed Сервер не может удовлетворить требования, указанные в заголовке Expect запроса.
418 I'm a teapot Шуточный код состояния, введенный в RFC 2324. Указывает, что сервер отказывается заваривать кофе, потому что он чайник. Не предназначен для реального использования.
422 Unprocessable Entity Запрос был хорошо сформирован, но не может быть обработан из-за семантических ошибок. Часто используется при валидации форм, когда данные синтаксически верны, но семантически некорректны.
429 Too Many Requests Клиент отправил слишком много запросов за определенный промежуток времени. Используется для ограничения скорости запросов (rate limiting). Ответ обычно включает заголовок Retry-After.
431 Request Header Fields Too Large Сервер отказывается обрабатывать запрос, потому что заголовки запроса слишком большие. Проблема может быть решена путем уменьшения размера заголовков.
451 Unavailable For Legal Reasons Запрошенный ресурс недоступен по юридическим причинам, например, по цензурным соображениям. Название является отсылкой к роману "451 градус по Фаренгейту".

5xx - Ошибки сервера

Коды ошибок сервера указывают на проблемы на стороне сервера. Запрос клиента может быть корректным, но сервер не может его выполнить из-за внутренних проблем.

Код Название Описание
500 Internal Server Error Общая ошибка сервера, указывающая на неожиданное состояние, которое помешало выполнению запроса. Может возникать из-за ошибок в коде сервера, проблем с базой данных или других внутренних сбоев. Один из самых распространенных кодов ошибок сервера.
501 Not Implemented Сервер не поддерживает функциональность, необходимую для выполнения запроса. Обычно это означает, что сервер не распознает метод запроса или не может его обработать.
502 Bad Gateway Сервер, действующий как шлюз или прокси, получил недопустимый ответ от вышестоящего сервера. Часто возникает, когда прокси-сервер не может связаться с основным сервером или получает от него некорректный ответ.
503 Service Unavailable Сервер временно не может обрабатывать запросы из-за перегрузки или технического обслуживания. Обычно это временное состояние, и сервер может включать заголовок Retry-After с указанием времени восстановления.
504 Gateway Timeout Сервер, действующий как шлюз или прокси, не получил своевременный ответ от вышестоящего сервера. Похож на 502, но указывает конкретно на проблему тайм-аута, а не на получение некорректного ответа.
505 HTTP Version Not Supported Сервер не поддерживает версию HTTP-протокола, использованную в запросе. Например, клиент отправил запрос с использованием HTTP/2, но сервер поддерживает только HTTP/1.1.
506 Variant Also Negotiates Сервер обнаружил внутреннюю конфигурационную ошибку: выбранный вариант ресурса сам настроен для согласования контента. Это редкий код ошибки, связанный с проблемами в настройке согласования контента.
507 Insufficient Storage Сервер не может выполнить запрос из-за нехватки свободного места. Часто используется в протоколах WebDAV, когда операция не может быть выполнена из-за квот хранилища.
508 Loop Detected Сервер обнаружил бесконечный цикл при обработке запроса. Часто возникает в протоколах WebDAV при работе с бесконечными коллекциями или циклическими ссылками.
510 Not Extended Серверу требуются дополнительные расширения запроса для его выполнения. Редко используемый код, связанный с расширениями HTTP-протокола.
511 Network Authentication Required Клиент должен аутентифицироваться для получения доступа к сети. Часто используется в системах с captive portal, например, в публичных Wi-Fi сетях, требующих авторизации перед предоставлением доступа к интернету.