Коды состояния HTTP: 200, 301, 400, 401, 404, 500
Что такое статус ответа HTTP и что означает? Разбираем группы 1xx–5xx, популярные коды 200, 201, 301, 400, 401, 403, 404, 500 с примерами


При взаимодействии клиента и сервера важно не только передать запрос и получить ответ, но и понять результат его обработки.
Для понимания ответа в HTTP предусмотрены специальные коды состояния.
Коды состояния или статус ответа в HTTP (HTTP Status Codes) это трёхзначные числовые значения, которые сервер возвращает клиенту в HTTP-ответе для обозначения результата обработки запроса.
Каждый код относится к определённой категории и имеет своё значение.
HTTP/1.1 200 OKпример кода состояния в HTTP
В этом примере: 200 это код состояния HTTP, означающий успешную обработку запроса, OK это текстовое описание статуса.
Код состояния позволяет клиенту быстро понять, был ли запрос успешно обработан, требуется ли переход на другой адрес или возникла ошибка.
Все коды состояния HTTP разделены на пять основных групп.
Первая цифра определяет категорию ответа.
| Диапазон | Категория | Назначение |
|---|---|---|
| 1xx | Informational | Информационные ответы |
| 2xx | Success | Успешная обработка запроса |
| 3xx | Redirection | Переадресация |
| 4xx | Client Error | Ошибки на стороне клиента |
| 5xx | Server Error | Ошибки на стороне сервера |
Ниже рассмотрим каждую группу подробнее.
Коды группы 1xx означают, что сервер получил запрос и продолжает его обработку.
Это промежуточные ответы, после которых обычно следует окончательный ответ.
100 Continue - сервер получил начальную часть запроса и сообщает клиенту, что можно продолжать передачу его содержимого.
Чаще всего используется при отправке больших объёмов данных, когда клиент предварительно проверяет возможность передачи тела запроса.
101 Switching Protocols - сервер согласился переключить протокол в соответствии с запросом клиента.
Например, может использоваться при переходе с HTTP на WebSocket через механизм Upgrade в HTTP/1.1.
102 Processing - сервер принял запрос и обрабатывает его, но окончательный ответ пока не готов.
Этот код определён расширением WebDAV.
103 Early Hints - сервер отправляет предварительные заголовки, которые позволяют клиенту начать загрузку необходимых ресурсов ещё до получения окончательного ответа.
Например, браузер может заранее загрузить CSS или шрифты.
Коды группы 2xx означают, что запрос был успешно получен, понят и обработан сервером.
200 OK - запрос успешно обработан.
Это один из наиболее распространённых кодов HTTP.
Используется, например, при получении данных через метод GET или успешном выполнении операции, для которой предусмотрен ответ с содержимым.
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 15,
"name": "Иван"
}пример ответа HTTP 200 на правильный запрос клиента
201 Created - запрос успешно выполнен, в результате чего был создан новый ресурс.
Часто используется после POST-запросов при создании новых записей.
HTTP/1.1 201 Created
Location: /api/users/15
Content-Type: application/json
{
"id": 15,
"name": "Иван"
}пример ответа HTTP 201 о создании новой записи
Заголовок Location может содержать адрес созданного ресурса.
202 Accepted - запрос принят для обработки, но сама обработка ещё не завершена.
Например, сервер может принять запрос на генерацию отчёта или обработку большого файла и выполнить операцию асинхронно.
Код 202 не гарантирует, что операция в итоге будет успешно завершена.
204 No Content - запрос успешно обработан, но сервер не возвращает тело ответа.
Часто используется после HTTP метода DELETE, когда удаление ресурса прошло успешно.
HTTP/1.1 204 No Contentпример ответа HTTP 204 без тела ответа
206 Partial Content - сервер возвращает только часть запрашиваемого ресурса.
Чаще всего используется при загрузке файлов по частям, когда клиент запрашивает определённый диапазон данных с помощью заголовка Range.
Коды группы 3xx сообщают клиенту, что для завершения запроса необходимо выполнить дополнительные действия, обычно связанные с переадресацией.
301 Moved Permanently - ресурс был перемещён на другой адрес на постоянной основе.
Сервер может указать новый адрес в заголовке Location.
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-pageпример ответа HTTP 301 о перемещенном ресурсе на постоянной основе
Браузер может автоматически перенаправить пользователя на новый адрес.
Часто используется при изменении URL страницы или домена сайта на постоянной основе.
302 Found - ресурс временно доступен по другому адресу.
HTTP/1.1 302 Found
Location: https://example.com/temporary-pageпример ответа HTTP 302 о временном перемещении ресурса
В отличие от 301, этот код указывает на временную переадресацию.
303 See Other - сервер сообщает клиенту, что результат запроса доступен по другому адресу (URI) и для его получения следует использовать HTTP метод GET.
Часто применяется после отправки формы, чтобы перенаправить пользователя на страницу результата.
304 Not Modified -сообщает клиенту, что ресурс не изменился с момента последнего обращения.
В таком случае браузер может использовать ранее сохранённую копию ресурса из кэша.
Механизм позволяет уменьшить объём передаваемых данных и ускорить загрузку страниц.
307 Temporary Redirect - сообщает о временной переадресации.
В отличие от 302, клиент должен сохранить исходный HTTP-метод и тело запроса при переадресации.
308 Permanent Redirect - сообщает о постоянной переадресации.
В отличие от 301, клиент должен сохранить исходный HTTP-метод и тело запроса.
Коды группы 4xx означают, что запрос не может быть обработан из-за проблемы, связанной с запросом клиента.
Это может быть неправильный формат данных, отсутствие авторизации, недостаточные права доступа или отсутствие запрашиваемого ресурса.
400 Bad Request - сервер не может обработать запрос из-за ошибки в его структуре или содержимом.
Например, клиент отправил некорректный JSON:
{
"name": "Иван",
"email":
}пример некорректный запрос клиента
Сервер может вернуть:
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": "Invalid request"
}пример ответа HTTP 400 на некорректный запрос клиента
401 Unauthorized - запрос не содержит действующих данных аутентификации.
Например, клиент пытается получить защищённый ресурс без токена доступа или передаёт недействительный токен.
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"error": "Authentication required"
}пример ответа HTTP 401 на запрос клиента на защищенный ресурс
Несмотря на название не авторизован (Unauthorized), этот код прежде всего связан с отсутствием или недействительностью аутентификации.
403 Forbidden - сервер понял запрос, но отказывает в его выполнении.
Например, пользователь успешно прошёл аутентификацию, но не имеет прав на удаление определённой записи.
Когда использовать 401, а когда 403:
при 401 - отсутствуют действующие данные аутентификации
при 403 сервер отказывает в доступе к запрашиваемому ресурсу или выполнении операции
404 Not Found - запрашиваемый ресурс не найден.
Например, клиент пытается получить пользователя с идентификатором, которого нет в системе.
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": "User not found"
}пример ответа HTTP 404 на запрос клиента несуществующего объекта
Код может использоваться, если сервер не хочет раскрывать факт существования защищённого ресурса.
405 Method Not Allowed - используемый HTTP-метод не поддерживается для указанного ресурса.
Например, ресурс позволяет получать данные через HTTP метод GET, но не поддерживает HTTP метод DELETE.
Сервер может вернуть заголовок Allow, содержащий список разрешённых методов.
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONSпример ответа HTTP 405 с разрешенными методами
406 Not Acceptable - сервер не может предоставить ответ в формате, который клиент указал в заголовке «Принимается» (Accept).
408 Request Timeout - cервер не получил полный запрос в течение времени, отведённого на ожидание.
Например, клиент слишком долго передавал данные.
409 Conflict - запрос не может быть выполнен из-за конфликта с текущим состоянием ресурса.
Например, клиент пытается создать пользователя с email, который уже зарегистрирован, если правила приложения запрещают дубликаты.
410 Gone - ресурс был удалён и больше недоступен.
В отличие от 404, этот код указывает, что отсутствие ресурса известно серверу и так и должно быть на постоянной основе.
413 Content Too Large - размер тела запроса превышает допустимое значение, установленное сервером.
Например, пользователь пытается загрузить файл, размер которого превышает разрешённый лимит.
415 Unsupported Media Type - сервер не поддерживает формат данных, передаваемых в запросе.
422 Unprocessable Content - сервер понимает тип содержимого и синтаксис запроса, но не может обработать переданные данные из-за ошибок в них.
Например, JSON корректен, но обязательное поле содержит недопустимое значение.
429 Too Many Requests - клиент отправил слишком много запросов за определённый период времени.
Часто используется для ограничения количества обращений к API (Rate Limiting).
Сервер может дополнительно вернуть заголовок Retry-After, указывающий, когда клиенту следует повторить запрос.
Коды группы 5xx означают, что сервер не смог успешно обработать корректный запрос из-за проблемы на своей стороне или в инфраструктуре, через которую он выполняется.
500 Internal Server Error - произошла внутренняя ошибка сервера, которая помешала обработать запрос.
Это общий код для непредвиденных ошибок, причины которых могут быть связаны с программным кодом, базой данных или другими компонентами системы.
501 Not Implemented - сервер не поддерживает функциональность, необходимую для выполнения запроса.
Например, сервер не реализовал указанный HTTP-метод или функциональность.
502 Bad Gateway - сервер, выступающий в роли шлюза или прокси, получил некорректный ответ от вышестоящего сервера.
Например, API обратился к внутреннему сервису, но получил от него недопустимый ответ.
503 Service Unavailable - сервер временно не может обработать запрос.
Причиной может быть техническое обслуживание, перегрузка или временная недоступность сервиса.
Сервер может использовать заголовок Retry-After, чтобы сообщить клиенту, когда можно повторить запрос.
504 Gateway Timeout - сервер, работающий как шлюз или прокси, не дождался своевременного ответа от вышестоящего сервера.
Например, API отправил запрос внутреннему сервису, но тот не ответил в установленный промежуток времени.
| Код | Название | Описание |
|---|---|---|
| 100 | Continue | Можно продолжить передачу запроса |
| 101 | Switching Protocols | Переключение протокола |
| 103 | Early Hints | Предварительные заголовки |
| 200 | OK | Запрос успешно обработан |
| 201 | Created | Ресурс создан |
| 202 | Accepted | Запрос принят для обработки |
| 204 | No Content | Успешный ответ без тела |
| 206 | Partial Content | Возвращена часть ресурса |
| 301 | Moved Permanently | Постоянная переадресация |
| 302 | Found | Временная переадресация |
| 303 | See Other | Переадресация с использованием GET |
| 304 | Not Modified | Ресурс не изменился |
| 307 | Temporary Redirect | Временная переадресация с сохранением метода |
| 308 | Permanent Redirect | Постоянная переадресация с сохранением метода |
| 400 | Bad Request | Некорректный запрос |
| 401 | Unauthorized | Требуется аутентификация |
| 403 | Forbidden | Доступ запрещён |
| 404 | Not Found | Ресурс не найден |
| 405 | Method Not Allowed | Метод не поддерживается ресурсом |
| 406 | Not Acceptable | Неприемлемый формат ответа |
| 408 | Request Timeout | Время ожидания запроса истекло |
| 409 | Conflict | Конфликт с текущим состоянием ресурса |
| 410 | Gone | Ресурс окончательно удалён |
| 413 | Content Too Large | Слишком большой запрос |
| 415 | Unsupported Media Type | Неподдерживаемый формат данных |
| 422 | Unprocessable Content | Ошибка обработки содержимого |
| 429 | Too Many Requests | Слишком много запросов |
| 500 | Internal Server Error | Внутренняя ошибка сервера |
| 501 | Not Implemented | Функциональность не реализована |
| 502 | Bad Gateway | Некорректный ответ вышестоящего сервера |
| 503 | Service Unavailable | Сервис временно недоступен |
| 504 | Gateway Timeout | Истекло время ожидания ответа от вышестоящего сервера |
Если у вас остались вопросы по кодам состоянии в HTTP, вы можете обратиться за консультацией к программисту.





