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 сетях, требующих авторизации перед предоставлением доступа к интернету. |