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-коды состояния играют ключевую роль в функционировании веб-приложений и служб. Они обеспечивают стандартизированную коммуникацию между серверами и клиентами, помогая управлять потоком данных и исправлять ошибки. Понимание этих кодов важно для разработчиков и администраторов, так как позволяет эффективно решать проблемы и оптимизировать работу веб-ресурсов.
Добавить комментарий