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

- Canonical: https://asgru.com/ru/http-kody-sostoyaniya/
- Language: ru
- Author: asgru
- Published: 2024-06-24T12:58:02+02:00
- Updated: 2024-06-24T10:55:56+02:00

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

## История и предназначение

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

## Структура и диапазоны кодов состояния

Коды состояния HTTP представляют собой трехзначные числа. Первой цифрой определяется класс состояния, который указывает на общий тип ответа. Всего существует пять классов состояний:

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

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

- 2xx: Успешные ответы

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

- 3xx: Перенаправления

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

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

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

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

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

### Детальное описание кодов состояния

#### 1xx: Информационные ответы

- 100 Continue: Сервер получил начальную часть запроса и клиент должен продолжить отправку.

- 101 Switching Protocols: Сервер согласен переключить протоколы согласно запросу клиента.

- 102 Processing: Сервер принял запрос, но обработка ещё не завершена.

#### 2xx: Успешные ответы

- 200 OK: Запрос успешно обработан, и сервер вернул запрашиваемый ресурс.

- 201 Created: Запрос успешно выполнен, и был создан новый ресурс.

- 202 Accepted: Запрос принят для обработки, но обработка не завершена.

- 203 Non-Authoritative Information: Запрос успешно выполнен, но информация из другого источника.

- 204 No Content: Запрос успешно выполнен, но в ответе нет содержимого.

- 205 Reset Content: Запрос успешно выполнен, клиент должен сбросить представление.

- 206 Partial Content: Сервер вернул часть содержимого в ответ на запрос диапазона.

#### 3xx: Перенаправления

- 300 Multiple Choices: Запрос может быть выполнен несколькими способами.

- 301 Moved Permanently: Запрашиваемый ресурс был окончательно перемещен на новый URL.

- 302 Found: Запрашиваемый ресурс временно доступен по другому URL.

- 303 See Other: Ресурс должен быть получен по другому URL с использованием GET-запроса.

- 304 Not Modified: Запрашиваемый ресурс не был изменен с момента последнего запроса.

- 305 Use Proxy: Доступ к запрашиваемому ресурсу должен быть осуществлен через прокси.

- 307 Temporary Redirect: Запрашиваемый ресурс временно доступен по другому URL.

- 308 Permanent Redirect: Запрашиваемый ресурс был окончательно перемещен на новый URL.

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

- 400 Bad Request: Сервер не может обработать запрос из-за ошибки клиента.

- 401 Unauthorized: Требуется аутентификация для доступа к ресурсу.

- 402 Payment Required: Код зарезервирован для будущего использования.

- 403 Forbidden: Сервер отказывает в выполнении запроса.

- 404 Not Found: Запрашиваемый ресурс не найден.

- 405 Method Not Allowed: Метод запроса не разрешен для запрашиваемого ресурса.

- 406 Not Acceptable: Запрашиваемый ресурс не может быть представлен в приемлемом формате.

- 407 Proxy Authentication Required: Требуется аутентификация прокси.

- 408 Request Timeout: Время ожидания запроса истекло.

- 409 Conflict: Запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса.

- 410 Gone: Запрашиваемый ресурс более не доступен и не будет доступен в будущем.

- 411 Length Required: Требуется указание длины содержимого запроса.

- 412 Precondition Failed: Условие запроса не выполнено.

- 413 Payload Too Large: Размер запроса превышает допустимый лимит.

- 414 URI Too Long: URI запроса слишком длинный.

- 415 Unsupported Media Type: Тип данных запроса не поддерживается сервером.

- 416 Range Not Satisfiable: Указанный диапазон не может быть выполнен.

- 417 Expectation Failed: Ожидаемое поведение, указанное в заголовке запроса, не может быть выполнено сервером.

- 418 I’m a teapot: Эвристический код состояния, предложенный в RFC 2324.

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

- 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: Обнаружена бесконечная петля при обработке запроса.

- 510 Not Extended: Необходимы дополнительные расширения для выполнения запроса.

- 511 Network Authentication Required: Требуется аутентификация для доступа к сети.

## Заключение

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