Коды состояния ответа HTTP
==========================

Код состояния ответа HTTP показывает, был ли успешно выполнен определённый HTTP запрос. Ответы сгруппированы в 5 классов:

1. Информационные ответы (`100` – `199`)
2. Успешные ответы (`200` – `299`)
3. Сообщения о перенаправлении (`300` – `399`)
4. Ошибки клиента (`400` – `499`)
5. Ошибки сервера (`500` – `599`)

Коды состояния определены в RFC 9110.

**Примечание:** Если вы получили код ответа, которого нет в данном списке, то он является не стандартизированным, вероятнее всего он специфичен для конкретного сервера.

Информационные ответы
---------------------

`100 Continue`

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

`101 Switching Protocols`

Этот код отправляется в ответ на заголовок запроса `Upgrade` (en-US) от клиента и указывает протокол, на который переключается сервер.

`102 Processing` (en-US) (WebDAV (en-US))

Сервер получил и обрабатывает запрос, но ответа пока нет.

`103 Early Hints`

Этот код в первую очередь предназначен для использования с заголовком `Link` (en-US), позволяя пользовательскому агенту начать предварительную загрузку (en-US) ресурсов или осуществить предварительное соединение (en-US) к источнику ресурсов, пока сервер готовит ответ.

Успешные ответы
---------------

`200 OK`

Запрос успешно выполнен. Значение результата «успех» зависит от метода HTTP:

* `GET`: Ресурс был получен и передан в теле сообщения.
* `HEAD`: Ответ содержит заголовки, но тела сообщения нет.
* `PUT` или `POST`: Ресурс, описывающий результат действия, передан в теле сообщения.
* `TRACE`: Тело сообщения содержит сообщение запроса, полученное сервером.

`201 Created`

Запрос выполнен успешно, и в результате был создан новый ресурс. Обычно это ответ, отправляемый на запросы `POST` или `PUT`.

`202 Accepted`

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

`203 Non-Authoritative Information`

Возвращенные метаданные не полностью совпадают с теми, которые доступны на исходном сервере, а получены из другого источника. Чаще всего это используется для зеркал или резервных копий ресурсов. За исключением таких случаев предпочтительнее использовать ответ `200 OK`.

`204 No Content`

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

`205 Reset Content`

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

`206 Partial Content`

Этот код ответа используется, когда от клиента отправляется заголовок `Range` для запроса только части ресурса.

`207 Multi-Status` (en-US) (WebDAV (en-US))

Передаёт информацию о нескольких ресурсах в случаях, когда могут быть уместны несколько кодов состояния.

`208 Already Reported` (en-US) (WebDAV (en-US))

Используется внутри элемента ответа `<dav:propstat>`, чтобы избежать повторного перечисления «привязок» и дублирования данных.

`226 IM Used` (en-US) (HTTP Delta encoding)

Используется для ответа на запросы `GET` в тех случаях, когда сервер хочет отправить только изменённую часть ресурса (то есть «дельту»).

Сообщения о перенаправлении
---------------------------

`300 Multiple Choices`

У запроса более одного возможного ответа. Пользовательский агент или пользователь должен выбрать один из них. Не существует стандартизированного способа выбора одного из ответов, но рекомендуется использовать HTML-ссылки на возможные варианты, чтобы у пользователя была возможность выбора.

`301 Moved Permanently`

URL-адрес запрошенного ресурса был изменен навсегда. Новый URL-адрес указан в ответе.

`302 Found`

URI запрошенного ресурса был *временно* изменен. В будущем могут быть внесены дальнейшие изменения в URI. Следовательно, этот же URI должен использоваться клиентом в будущих запросах.

`303 See Other`

Клиенту необходимо получить запрошенный ресурс по другому URI с помощью запроса `GET`.

`304 Not Modified`

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

`305 Use Proxy` 
Устарело

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

`306 unused`

Этот код ответа зарезервирован. Использовался в предыдущей версии спецификации HTTP/1.1.

`307 Temporary Redirect`

Клиенту необходимо получить запрошенный ресурс по другому URI тем же методом, который использовался в предыдущем запросе. Он имеет ту же семантику, что и код ответа `302 Found`, за исключением того, что пользовательский агент *не должен* изменять используемый метод: если в первом запросе использовался `POST`, то `POST` должен использоваться и во втором запросе.

`308 Permanent Redirect`

Ресурс теперь находится по другому URI, указанному в заголовке ответа `Location`. Он имеет ту же семантику, что и код ответа `301 Moved Permanently`, за исключением того, что пользовательский агент не должен изменять используемый метод: если в первом запросе использовался `POST`, то `POST` должен использоваться и во втором запросе.

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

`400 Bad Request`

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

`401 Unauthorized`

Хотя стандарт HTTP определяет этот ответ как «неавторизованный», семантически он означает «неаутентифицированный». Это значит, что клиент должен аутентифицировать себя, чтобы получить запрошенный ответ.

`402 Payment Required` 
Экспериментальная возможность

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

`403 Forbidden`

Клиент не имеет прав доступа к контенту, то есть он неавторизован, поэтому сервер отказывается предоставить запрошенный ресурс. В отличие от `401 Unauthorized`, личность клиента известна серверу.

`404 Not Found`

Сервер не может найти запрошенный ресурс. В браузере это означает, что URL-адрес не распознан. В API это также может означать, что адрес правильный, но ресурс не существует. Сервер также может отправить этот код ответа вместо `403 Forbidden`, чтобы скрыть существование ресурса от неавторизованного клиента. Это самый известный код ответа из-за его частого появления в сети.

`405 Method Not Allowed`

Метод запроса известен серверу, но не поддерживается целевым ресурсом. Например, API может не разрешать вызов `DELETE` для удаления ресурса.

`406 Not Acceptable`

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

`407 Proxy Authentication Required`

Этот код ответа похож на `401 Unauthorized`, но аутентификация должна выполняться через прокси-сервер.

`408 Request Timeout`

Сервер может отправить этот код ответа при неиспользовании соединения, даже без предварительного запроса со стороны клиента. Он означает, что сервер хотел бы закрыть это соединение. Этот ответ используется сравнительно часто, поскольку некоторые браузеры (такие как Chrome, Firefox 27+ или IE9) для ускорения используют механизмы предварительного подключения HTTP. Некоторые серверы просто закрывают соединение, не отправляя это сообщение.

`409 Conflict`

Запрос конфликтует с текущим состоянием сервера.

`410 Gone`

Запрошенное содержимое было удалено с сервера, и отсутствует возможность переадресации. Ожидается, что клиенты удалят свои кеши и ссылки на этот ресурс. Спецификация HTTP предполагает, что этот код ответа будет использоваться для «ограниченных по времени или рекламных услуг». API не обязаны указывать ресурсы, которые были удалены, с помощью этого кода.

`411 Length Required`

Запрос отклонён, потому что сервер требует указание поля заголовка `Content-Length`, но оно не определено.

`412 Precondition Failed`

Клиент указал в заголовках запроса условия, которым сервер не соответствует.

`413 Payload Too Large`

Размер объекта запроса превышает ограничения, определенные сервером. Сервер может закрыть соединение или вернуть поле заголовка `Retry-After`.

`414 URI Too Long`

Запрошенный клиентом URI слишком длинный для того, чтобы сервер смог его обработать.

`415 Unsupported Media Type`

Запрос отклонён, потому что медиа формат запрашиваемых данных не поддерживается сервером.

`416 Range Not Satisfiable`

Сервер не может корректно обработать запрос с учётом диапазона, указанного в поле заголовка `Range`.

`417 Expectation Failed`

Сервер не может выполнить ожидание, указанное в поле заголовка запроса `Expect`.

`418 I'm a teapot`

«Шуточный» ответ: сервер отклоняет попытку заварить кофе в чайнике.

`421 Misdirected Request` (en-US)

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

`422 Unprocessable Content` (WebDAV (en-US))

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

`423 Locked` (en-US) (WebDAV (en-US))

Запрашиваемый ресурс заблокирован.

`424 Failed Dependency` (en-US) (WebDAV (en-US))

Запрос не выполнен из-за проблем в предыдущем запросе.

`425 Too Early` 
Экспериментальная возможность

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

`426 Upgrade Required`

Сервер отказывается выполнять запрос с использованием текущего протокола, но может быть готов сделать это после смены протокола на указанный в заголовке ответа `Upgrade` (en-US).

`428 Precondition Required`

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

`429 Too Many Requests`

Пользователь отправил слишком много запросов в определённый промежуток времени.

`431 Request Header Fields Too Large`

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

`451 Unavailable For Legal Reasons`

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

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

`500 Internal Server Error`

На сервере произошла ошибка, в результате которой он не может успешно обработать запрос.

`501 Not Implemented`

Метод запроса не поддерживается сервером и поэтому он не может быть обработан. Методы `GET` и `HEAD` должны всегда поддерживаться сервером и для них не должен возвращаться этот код.

`502 Bad Gateway`

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

`503 Service Unavailable`

Сервер не готов обработать запрос в данный момент. Распространёнными причинами являются техническое обслуживание или перегрузка сервера. Вместе с таким ответом следует отправлять удобную для пользователя страницу с объяснением проблемы, а также HTTP-заголовок `Retry-After` с расчётным временем решения проблемы. Кроме того, полезно отправлять заголовки с информацией о кешировании, поскольку эти временные ответы обычно не следует кэшировать.

`504 Gateway Timeout`

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

`505 HTTP Version Not Supported`

Используемая в запросе версия HTTP не поддерживается сервером.

`506 Variant Also Negotiates` (en-US)

На сервере произошла внутренняя ошибка конфигурации: выбранный в процессе согласования вариант ресурса не является подходящим.

`507 Insufficient Storage` (en-US) (WebDAV (en-US))

Запрос не выполнен, потому что серверу не удалось сохранить данные.

`508 Loop Detected` (en-US) (WebDAV (en-US))

Запрос не выполнен, потому что на сервере был обнаружен бесконечный цикл обработки данных.

`510 Not Extended` (en-US)

Для выполнения запроса необходимо его расширить.

`511 Network Authentication Required`

Клиенту необходимо пройти аутентификацию для получения доступа к сети.

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* Список кодов состояния HTTP в Википедии
* IANA official registry of HTTP status codes