Справочник HTTP кодов (статусов)

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

Что такое HTTP-код?

HTTP (HyperText Transfer Protocol) - это протокол, который определяет стандарты для передачи данных в сети. Один из аспектов протокола - это HTTP-коды (или HTTP-статусы), которые представляют собой набор чисел, обозначающих состояние сервера и взаимодействие с клиентом. Каждый HTTP-код имеет свое значение и функцию, которая позволяет клиентам и серверам правильно интерпретировать сообщения и управлять потоками данных.

Код состояния

Код состояния (статус) — числовое значение, возвращаемое сервером при выполнении запроса клиента. Коды состояния стандартизированы и описаны в RFC 2616. Они разделены на несколько классов, в зависимости от того, как они влияют на успешное завершение запроса клиентом.

1 класс — информация о запрашиваемом ресурсе.
2 класс — ошибка сервера.
3 класс — ошибка клиента.
4 класс — неклассифицированные ошибки.
5 класс — временные ошибки на сервере.

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

Например, код состояния 301 («Moved Permanently») означает, что ресурс был перемещен в другое место. Дополнительная информация в этом случае — «moved permanently».

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

Значения HTTP-кодов

Существует множество HTTP-кодов, каждый из которых имеет свое уникальное значение и функцию.

Информационные (1xx: Informational)

100 Continue Сервер "удовлетворён" начальными сведениями о запросе, клиент может продолжать пересылать заголовки
101 Switching Protocols Сервер выполняет требование клиента и переключает протоколы в соответствии с указанием, данным в поле заголовка Upgrade
102 Processing Запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания.
103 Early Hints используется для раннего возврата части заголовков, когда заголовки полного ответа не могут быть быстро сформированы

Успех (2xx: Success)

200 OK Успешный запрос
201 Created В результате успешного выполнения запроса был создан новый ресурс.
202 Accepted Запрос был принят на обработку, но она не завершена.
203 Non-Authoritative Information Аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной
204 No Content Сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения
205 Reset Content Сервер обязывает клиента сбросить введённые пользователем данные
206 Partial Content Сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения
207 Multi-Status Сервер передаёт результаты выполнения сразу нескольких независимых операций
208 Already Reported Члены привязки DAV уже были перечислены в предыдущей части (multistatus) ответа и не включаются снова
226 IM Used Заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров

Перенаправление (3xx: Redirection)

300 Multiple Choices По указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам
301 Moved Permanentl Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка
302 Found Запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location
302 Moved Temporarily Запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location
303 See Other Документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом
304 Not Modified Сервер возвращает код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента
305 Use Proxy Запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка.
306 (зарезервировано) Использовавшийся в ранних версиях спецификации код ответа, в настоящий момент зарезервирован
307 Temporary Redirect Запрашиваемый ресурс на короткое время доступен по другому URI, указанный в поле Location заголовка
308 Permanent Redirect Запрашиваемый ресурс был окончательно перенесен на новый URI, указанный в поле Location заголовка

Ошибки клиента (4xx: Client Error)

400 Bad Request Сервер обнаружил в запросе клиента синтаксическую ошибку
401 Unauthorized Для доступа к запрашиваемому ресурсу требуется аутентификация
402 Payment Required Не используется
403 Forbidden Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу
404 Not Found Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URL.
405 Method Not Allowed Указанный клиентом метод нельзя применить к текущему ресурсу
406 Not Acceptable Запрошенный URI не может удовлетворить переданным в заголовке характеристикам
407 Proxy Authentication Required Ответ аналогичен коду 401 за исключением того, что аутентификация производится для прокси-сервера
408 Request Timeout Время ожидания сервером передачи от клиента истекло
409 Conflict Запрос не может быть выполнен из-за конфликтного обращения к ресурсу
410 Gone Ресурс раньше был по указанному URL, но был удалён и теперь недоступен
411 Length Required Для указанного ресурса клиент должен указать Content-Length в заголовке запроса
412 Precondition Failed Возвращается, если ни одно из условных полей заголовка (If-Match и др.) запроса не было выполнено
413 Payload Too Large Возвращается в случае, если сервер отказывается обработать запрос по причине слишком большого размера тела запроса
414 URI Too Long Сервер не может обработать запрос из-за слишком длинного указанного URI
415 Unsupported Media Type По каким-то причинам сервер отказывается работать с указанным типом данных при данном методе
416 Range Not Satisfiable В поле Range заголовка запроса был указан диапазон за пределами ресурса и отсутствует поле If-Range
417 Expectation Failed По каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса
418 I’m a teapot Этот код был введен в 1998 году как одна из первоапрельских шуток IETF в RFC 2324
419 Authentication Timeout Используется в качестве альтернативы коду 401, которые прошли проверку подлинности, но лишены доступа к определенным ресурсам сервера
421 Misdirected Request Запрос был перенаправлен на сервер, не способный дать ответ
422 Unprocessable Entity Сервер успешно принял запрос, может работать с указанным видом данных, однако имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.
423 Locked Целевой ресурс из запроса заблокирован от применения к нему указанного метода
424 Failed Dependency Реализация текущего запроса может зависеть от успешности выполнения другой операции. Если она не выполнена и из-за этого нельзя выполнить текущий запрос, то сервер вернёт этот код
425 Too Early Сервер не готов принять риски обработки "ранней информации"
426 Upgrade Required Сервер указывает клиенту на необходимость обновить протокол
428 Precondition Required Сервер указывает клиенту на необходимость использования в запросе заголовков условий, наподобие If-Match
429 Too Many Requests Клиент попытался отправить слишком много запросов за короткое время
431 Request Header Fields Too Large Превышена допустимая длина заголовков
434 Requested host unavailable Запрашиваемый адрес недоступен
449 Retry With Возвращается сервером, если для обработки запроса от клиента поступило недостаточно информации
451 Unavailable For Legal Reasons Доступ к ресурсу закрыт по юридическим причинам
499 Client Closed Request Нестандартный код nginx: клиент закрыл соединение, пока сервер обрабатывал запрос

Ошибки сервера (5xx: Server Error )

500 Internal Server Error Любая внутренняя ошибка сервера
501 Not Implemented Сервер не поддерживает возможностей, необходимых для обработки запроса
502 Bad Gateway Сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера
503 Service Unavailable Сервер временно не имеет возможности обрабатывать запросы по техническим причинам
504 Gateway Timeout Сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса
505 HTTP Version Not Supported Сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP
506 Variant Also Negotiates В результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается
507 Insufficient Storage Не хватает места для выполнения текущего запроса
508 Loop Detected Операция отменена, т.к. сервер обнаружил бесконечный цикл при обработке запроса без ограничения глубины
509 Bandwidth Limit Exceeded Превышение веб-площадкой отведённого ей ограничения на потребление трафика
510 Not Extended На сервере отсутствует расширение, которое желает использовать клиент
511 Network Authentication Required Этот ответ посылается не сервером, которому был предназначен запрос, а сервером-посредником. Клиент должен сначала авторизоваться в сети.
520 Unknown Error Нестандартный код CloudFlare: CDN не смог обработать ошибку веб-сервера
521 Web Server Is Down Нестандартный код CloudFlare: Подключения CDN отклоняются веб-сервером
522 Connection Timed Out Нестандартный код CloudFlare: CDN не удалось подключиться к веб-серверу
523 Origin Is Unreachable Нестандартный код CloudFlare: Веб-сервер недостижим
524 A Timeout Occurred Нестандартный код CloudFlare: Тайм-аут подключения между сервером CDN и веб-сервером
525 SSL Handshake Failed Нестандартный код CloudFlare: Ошибка рукопожатия SSL между сервером CDN и веб-сервером
526 Invalid SSL Certificate Нестандартный код CloudFlare: Не удаётся подтвердить сертификат шифрования веб-сервера

Заключение

Понимание и использование HTTP-кодов является важным аспектом разработки веб-приложений и взаимодействия между клиентом и сервером. Знание значений HTTP-кодов позволяет разработчикам и администраторам серверов правильно интерпретировать ответы сервера и принимать соответствующие меры для обеспечения эффективной работы веб-приложения.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий