Что такое код состояния HTTP?
Код статуса HTTP — это трёхзначный код ответа, отправляемый веб-сервером для указания результата запроса клиента. Он помогает как браузерам, так и разработчикам понять, был ли запрос выполнен успешно, завершился ли он сбоем или требует дальнейших действий.
Каждый раз, когда клиент (например, браузер, API или прокси-сервер) отправляет запрос на веб-сервер, сервер отвечает кодом статуса, который описывает, как он обработал данный запрос.
Эти коды сгруппированы по пяти основным категориям в зависимости от их первой цифры:
- 1xx — Информационные: Запрос получен и находится в процессе обработки.
- 2xx — Успех: Запрос был успешно получен, обработан и принят.
- 3xx — Перенаправление: Клиенту необходимо предпринять дополнительные действия для завершения запроса.
- 4xx — Ошибки клиента: В запросе допущены синтаксические ошибки или его невозможно выполнить.
- 5xx — Ошибки сервера: Серверу не удалось выполнить действительный запрос.
Для пользователей прокси-серверов эти коды позволяют точно определить, связана ли проблема с подключением с прокси-сервером, целевым веб-сайтом или сетью между ними.
1xx — Информационные
| Код состояния | Определение | Следующие шаги |
|---|---|---|
| 100 Продолжить | Получена начальная часть запроса, и клиенту следует продолжить отправку запроса. | Продолжить отправку запроса. |
| 101 Протоколы коммутации | Сервер переключается на другой протокол в соответствии с запросом клиента. | Убедитесь, что клиент поддерживает новый протокол. |
| 102 Обработка | Сервер получил запрос и в настоящее время его обрабатывает, однако ответ пока отсутствует. | Дождитесь завершения обработки сервером. |
| 103 первых подсказок | Содержит предварительную информацию о запросе, как правило, для оптимизации загрузки. | Воспользуйтесь этими рекомендациями для повышения производительности или улучшения удобства работы пользователей. |
2xx — Успех
| Код состояния | Определение | Следующие шаги |
|---|---|---|
| 200 OK | Запрос был выполнен успешно, и сервер вернул запрошенный ресурс. | Действий не требуется; запрос выполнен успешно. |
| 201 Создано | Запрос был выполнен, в результате чего был создан новый ресурс. | Дальнейших действий не требуется; новый ресурс создан. |
| 202 Принято | Запрос принят к обработке, однако обработка ещё не завершена. | Дождитесь завершения обработки; при необходимости проверьте наличие обновлений. |
| 203 Неавторитетная информация | Запрос был выполнен успешно, однако возвращенные метаданные могут не принадлежать исходному серверу. | Проверьте полученные данные на соответствие требованиям. |
| 204 Отсутствие содержимого | Запрос был выполнен успешно, однако в ответе не возвращается никакое содержимое. | Действий не требуется; запрос был выполнен успешно, но отобразить нечего. |
| 205 Сброс содержимого | Запрос выполнен успешно, и клиенту следует обновить представление. | Сбросить состояние просмотра документа или формы до исходного. |
| 206 Неполное содержание | Сервер возвращает частичное содержимое запрашиваемого ресурса, как правило, в связи с наличием заголовка range. | При необходимости продолжайте запрашивать дополнительные данные; проверьте полученные данные. |
3xx — Перенаправление
| Код состояния | Определение | Следующие шаги |
|---|---|---|
| 300 вопросов с несколькими вариантами ответов | Для данного запроса существует несколько возможных ответов. Пользователю или клиенту следует выбрать один из них. | Выберите один из предложенных вариантов или уточните свой запрос. |
| 301 Перемещено навсегда | Запрашиваемый ресурс был перемещен по новому URL-адресу, и во всех последующих запросах следует использовать этот новый URL-адрес. | Обновите закладки или ссылки, чтобы использовать новый URL. |
| 302 Найден | Запрашиваемый ресурс временно находится по другому URL-адресу, однако клиенту следует и в дальнейшем использовать исходный URL-адрес для последующих запросов. | Перейдите по временному URL-адресу, но для последующих запросов продолжайте использовать исходный URL-адрес. |
| 303 См. также | Ответ на запрос можно найти по другому URL-адресу с использованием метода GET. | Отправьте запрос GET по указанному URL-адресу, чтобы получить ресурс. |
| 304 Не изменено | Ресурс не изменялся с момента последнего запроса, и клиент может использовать версию из кэша. | Используйте кэшированную версию ресурса. |
| 305 Использование прокси-сервера | Доступ к запрашиваемому ресурсу необходимо осуществлять через прокси-сервер, указанный в ответе. | Отправьте запрос повторно, используя указанный прокси-сервер. |
| 307 Временное перенаправление | Запрашиваемый ресурс временно находится по другому URL-адресу, и клиенту следует использовать этот URL-адрес для данного запроса. | Для данного запроса воспользуйтесь временным URL-адресом, однако для последующих запросов используйте исходный URL-адрес. |
| 308 Постоянное перенаправление | Запрашиваемый ресурс был окончательно перемещен по новому URL-адресу, и во всех последующих запросах следует использовать новый URL-адрес. | Обновите все ссылки, чтобы использовать новый URL. |
4xx — Ошибка клиента
| Код состояния | Определение | Следующие шаги |
|---|---|---|
| 400 Неверный запрос | Сервер не может обработать запрос из-за ошибки на стороне клиента (например, некорректный синтаксис запроса). | Проверьте синтаксис и параметры запроса, а затем повторите попытку. |
| 401 Неавторизованный доступ | Для доступа к запрошенному ресурсу требуется аутентификация. | Укажите действительные учетные данные для аутентификации и попробуйте ещё раз. |
| 402 Требуется оплата | Зарезервировано для использования в будущем; как правило, указывает на то, что для доступа к ресурсу требуется оплата. | Если необходимо, завершите процесс оплаты. |
| 403 Доступ запрещен | Сервер распознает запрос, но отказывается его авторизовать. | Убедитесь, что у вас есть необходимые права доступа к ресурсу. |
| 404 Не найдено | Сервер не может найти запрошенный ресурс. | Проверьте URL на наличие ошибок или попробуйте выполнить поиск ресурса. |
| 405 Метод не допускается | Метод запроса не поддерживается для указанного ресурса. | Проверьте, используется ли правильный HTTP-метод (GET, POST и т. д.). |
| 406 Недопустимо | Сервер не может сгенерировать ответ, который соответствовал бы заголовкам Accept клиента. | Настройте заголовки запроса так, чтобы он принимал допустимый формат ответа. |
| 407 Требуется аутентификация прокси-сервера | Клиент должен сначала пройти аутентификацию на прокси-сервере. | Укажите действительные учетные данные для аутентификации через прокси. |
| 408 Превышение времени ожидания запроса | Сервер превысил лимит времени ожидания запроса. | Повторно отправьте запрос, убедившись, что он отправлен в пределах времени, допускаемого сервером. |
| 409 Конфликт | Запрос не удалось обработать из-за конфликта с текущим состоянием ресурса. | Устраните конфликт, прежде чем повторить запрос. |
| 410 Не найдено | Запрашиваемый ресурс больше недоступен и не будет доступен в будущем. | Удалите или обновите ссылки на данный ресурс, поскольку он был окончательно удален. |
| Требуемая длина 411 | Сервер требует, чтобы в запросе присутствовал заголовок Content-Length. | Включите в запрос заголовок Content-Length и повторите попытку. |
| 412 Нарушение предварительного условия | Сервер не соответствует одному из предварительных условий, указанных в заголовках запроса. | Проверьте предварительные условия в заголовках запроса и при необходимости скорректируйте их. |
| 413 Размер полезных данных превышает допустимый | Размер объекта запроса превышает возможности сервера по его обработке. | Уменьшите размер данных запроса и повторите попытку. |
| 414 Слишком длинный URI | URI, запрошенный клиентом, превышает максимальную длину, которую сервер готов обработать. | Сократите URI или упростите запрос. |
| 415 Неподдерживаемый тип медиа | Формат данных, запрошенных пользователем, не поддерживается сервером. | В запросе следует использовать поддерживаемый формат медиафайла. |
| 416. Диапазон не соответствует условиям | Сервер не может выполнить запрос, указанный в заголовке «Range». | Измените запрос на диапазон или попробуйте получить доступ к полному ресурсу. |
| 417 Ошибка ожидания | Сервер не может выполнить требования, указанные в поле заголовка запроса «Expect». | Удалите заголовок «Expect» или измените его значение и попробуйте ещё раз. |
| 429 Слишком много запросов | Пользователь отправил слишком много запросов с одного и того же IP-адреса за определенный промежуток времени («ограничение скорости»). | Подождите и попробуйте снова через некоторое время; рекомендуется уменьшить частоту запросов или распределить их по нескольким IP-адресам с помощью прокси-серверов для частных пользователей. |
5xx — Ошибка сервера
| Код состояния | Определение | Следующие шаги |
|---|---|---|
| Ошибка 500: внутренняя ошибка сервера | На сервере произошла непредвиденная ситуация, из-за которой запрос не удалось выполнить. | Проверьте журналы сервера на наличие ошибок и устраните все неисправности, вызывающие данную проблему. |
| 501 Не реализовано | Сервер не поддерживает функции, необходимые для выполнения запроса. | Убедитесь, что серверное программное обеспечение способно обработать данный запрос; рассмотрите возможность обновления или замены сервера. |
| 502 Ошибка шлюза | Сервер, работая в качестве шлюза или прокси-сервера, получил некорректный ответ от вышестоящего сервера. | Проверьте исходный сервер и сетевые соединения; устраните все проблемы. |
| 503 Сервис недоступен | В данный момент сервер не может обработать запрос, что часто связано с временной перегрузкой или проведением технического обслуживания. | Попробуйте позже; проверьте загрузку сервера или статус технического обслуживания. |
| 504 Таймаут шлюза | Сервер, действуя в качестве шлюза или прокси-сервера, не получил своевременного ответа от вышестоящего сервера. | Проверьте исходный сервер и сетевые соединения; убедитесь в правильности настроек таймаута. |
| 505 Версия HTTP не поддерживается | Сервер не поддерживает версию протокола HTTP, использованную в запросе. | Используйте поддерживаемую версию HTTP или обновите программное обеспечение сервера. |
| Вариант 506 также подлежит обсуждению | На сервере произошла внутренняя ошибка конфигурации, приведшая к возникновению циклической ссылки. | Исправьте настройки сервера, чтобы устранить циклическую ссылку. |
| 507 Недостаточно места на диске | Сервер не может сохранить представление, необходимое для выполнения запроса. | Освободите место на диске или увеличьте объём хранилища на сервере. |
| Обнаружен цикл 508 | Сервер обнаружил бесконечный цикл при обработке запроса. | Выявите и устраните цикл в конфигурации или коде сервера. |
| 510 Не продлено | Для выполнения запроса сервером потребуются дополнительные данные. | Убедитесь, что запрос клиента содержит необходимые расширения. |
| Требуется сетевая аутентификация 511 | Клиенту необходимо пройти аутентификацию для получения доступа к сети. | Укажите действительные учетные данные для сетевой аутентификации. |
Случаи использования
Мониторинг прокси-соединений
При использовании прокси-серверы для сбора данных В случае веб-автоматизации коды статуса показывают, где произошла ошибка при обработке запроса — на прокси-сервере, на целевом сервере или в сети. Например, ошибка 403 часто указывает на блокировку IP-адреса, а ошибка 407 означает аутентификация через прокси-сервер не удалось.
Оптимизация веб-парсинга
Скрейперы используют коды статуса для динамической настройки своего поведения. A 429. Слишком много запросов запускает автоматическое регулирование пропускной способности или смену прокси-серверов, что помогает обеспечить доступ к целевым веб-сайтам.
Передовой опыт
Регистрация и классификация кодов состояния
Всегда фиксируйте коды состояния во время соскабливание или операций API. Распознавание закономерностей (таких как всплески ошибок 403 или 429) помогает точно настроить параметры прокси-сервера и пользовательских агентов.
Используйте алгоритм повторных попыток и ротацию
Реализуйте повторные попытки и Ротация IP-адресов в случае временных ответов с кодами 5xx или 429. Это повышает время безотказной работы и снижает риск блокировки.
Отслеживание динамики откликов
Настройте оповещения о нетипичных показателях ошибок, чтобы своевременно выявлять проблемы — например, истекшие учетные данные прокси-сервера или изменения на целевом веб-сайте.
Заключение
Коды статуса HTTP служат связующим звеном между клиентом и сервером, сигнализируя об успешном выполнении запроса, его сбое или необходимости корректировки. Для команд, использующих прокси-серверы, понимание этих кодов помогает быстрее выявлять и устранять проблемы, повышая надежность соединения и точность данных.
Часто задаваемые вопросы
Они описывают, как сервер отреагировал на запрос клиента — был ли он выполнен успешно, завершился ли сбоем или требует дополнительных действий.
Они помогают определить, связана ли проблема с вашим прокси-сервером, целевым веб-сайтом или настройками клиентского устройства.
Ошибки серии 4xx указывают на проблемы на стороне клиента (например, некорректный запрос или несанкционированный доступ), тогда как ошибки серии 5xx указывают на сбои на стороне сервера.
Во многих случаях — да. Смена IP-адресов, использование прокси-серверов для частных пользователей или правильная аутентификация часто позволяют устранить ошибки 4xx и 5xx.