ToolHub
View All Posts

Понимание HTTP-кодов состояния: полное руководство

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

Что такое HTTP-коды состояния?

HTTP-коды состояния — это трёхзначные числа, возвращаемые сервером в ответ на HTTP-запрос клиента. Они указывают, был ли запрос успешным, перенаправленным или неудачным, и почему. Коды состояния определены в RFC 7231 и RFC 6585 и сгруппированы в пять классов на основе первой цифры.

КодНазваниеОписание
100ContinueКлиент должен продолжить запрос
101Switching ProtocolsСервер переключает протоколы
200OKЗапрос успешен
201CreatedРесурс создан
204No ContentЗапрос успешен, нет тела ответа

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

Каждый HTTP-код состояния состоит из трёх цифр. Первая цифра определяет класс ответа: 1xx для информационных, 2xx для успеха, 3xx для перенаправления, 4xx для ошибок клиента и 5xx для ошибок сервера. Последние две цифры предоставляют конкретную информацию в рамках этого класса.

2xx: Успех

Коды 1xx указывают, что запрос получен и обработка продолжается. Они редко встречаются в повседневной веб-разработке, поскольку обычно обрабатываются прозрачно браузерами и HTTP-клиентами. Наиболее заметным является 101 Switching Protocols, используемый при обновлении WebSocket.

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

Коды 2xx указывают, что запрос был успешно получен, понят и принят сервером. Это то, что вы хотите видеть в ответах вашего API.

Важное примечание: коды ошибок 4xx указывают на проблему с запросом клиента. Повторная отправка того же запроса без изменений приведёт к той же ошибке. Коды ошибок 5xx указывают на проблему на стороне сервера, и повторная попытка позже может быть успешной. Понимание этого различия является ключом к правильной обработке ошибок.

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

Коды 3xx указывают, что клиенту необходимо предпринять дополнительные действия для завершения запроса, обычно следуя перенаправлению на другой URL.

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

Коды 4xx указывают, что клиент, похоже, ошибся. Это наиболее часто встречающиеся коды ошибок в веб-разработке, и они обычно указывают на проблему с запросом.

Коды состояния в REST API

Коды 5xx указывают, что сервер не смог выполнить действительный запрос. Это ошибки на стороне сервера, и клиенты обычно не могут их исправить, кроме повторной попытки позже.

  1. Check the status code: Identify whether it is a client error (4xx) or server error (5xx).
  2. Review server logs: For 5xx errors, server logs contain the stack trace and error details.
  3. Inspect request headers: Use browser developer tools to verify that your request includes correct headers, cookies, and authentication tokens.
  4. Test with curl: Reproduce the request using curl to isolate whether the issue is with the client or server.
  5. Check recent changes: Deployments, configuration updates, or DNS changes often cause status code errors.

Хорошо спроектированные REST API используют HTTP-коды состояния семантически для передачи результата каждой операции. Это делает API самодокументируемыми и упрощает обработку ошибок клиентами.

Проверить HTTP-статус

Отладка с помощью HTTP-кодов состояния

Структура HTTP-кода состояния

При отладке проблем с API или веб-приложением, HTTP-коды состояния часто являются первым ключом к пониманию того, что пошло не так. Всегда проверяйте код состояния и тело ответа вместе — код состояния говорит вам, что произошло, а тело объясняет почему.

200 OK

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

201 Created

Нужно протестировать ответы API? Попробуйте наш бесплатный онлайн-инструмент для проверки HTTP-кодов состояния и заголовков ответа.

204 No Content

200 OK означает, что запрос был успешным. Для GET-запросов сервер возвращает запрошенный ресурс. Для POST-запросов сервер вернул результат обработки. Это стандартный ответ на успешные HTTP-запросы.

206 Partial Content

401 Unauthorized означает, что для запроса требуется аутентификация, но она не была предоставлена или была недействительной. 403 Forbidden означает, что сервер понял запрос и клиент аутентифицирован, но не имеет разрешения на доступ к ресурсу. Думайте о 401 как о «вы не вошли» и 403 как о «вы вошли, но не допущены».