HTTP-коды ответов
Полный справочник кодов состояния HTTP-ответов: что означает каждый код, когда сервер его отправляет и как на него реагировать — для отладки запросов, документирования API и анализа серверных логов.
Используйте ссылки для перехода между классами ответов или откройте подробные руководства по самым распространённым кодам.
Таблица кодов ответа HTTP
| Code | Название | Значение |
|---|---|---|
| 1xx Информационные | ||
| 100 | Continue | Сервер получил заголовки запроса, и клиенту следует отправить тело запроса. |
| 101 | Switching Protocols | Сервер соглашается переключиться на протокол, запрошенный в заголовке Upgrade. |
| 102 | Processing | Сервер принял запрос целиком, но ещё не завершил его обработку (WebDAV). |
| 103 | Early Hints | Предварительные заголовки, в основном подсказки предзагрузки Link, отправленные до финального ответа. |
| 2xx Успешные | ||
| 200 | OK | Запрос выполнен успешно, и ответ содержит запрошенное представление. |
| 201 | Created | Запрос выполнен успешно, и создан новый ресурс, обычно указанный в Location. |
| 202 | Accepted | Запрос принят для асинхронной обработки, которая ещё не завершена. |
| 203 | Non-Authoritative Information | Ответ был изменён преобразующим прокси на пути к клиенту. |
| 204 | No Content | Запрос выполнен успешно, и тело ответа намеренно отсутствует. |
| 205 | Сбросить Content | Запрос выполнен успешно, и клиенту следует сбросить представление документа или формы. |
| 206 | Partial Content | Ответ доставляет только диапазон байтов, запрошенный в заголовке Range. |
| 3xx Перенаправления | ||
| 300 | Multiple Choices | Существует несколько представлений, и клиенту следует выбрать одно из них. |
| 301 | Moved Permanently | Ресурс постоянно переехал на новый URL, и ссылки следует обновить. |
| 302 | Found | Ресурс временно находится по другому URL; продолжайте использовать исходный. |
| 303 | See Other | Результат доступен по другому URL и должен быть получен методом GET. |
| 304 | Not Modified | Кэшированная копия всё ещё актуальна, поэтому тело ответа снова не отправляется. |
| 307 | Temporary Redirect | Временный редирект, при котором должны сохраняться исходный HTTP-метод и тело запроса. |
| 308 | Permanent Redirect | Постоянный редирект, при котором должны сохраняться исходный HTTP-метод и тело запроса. |
| 4xx Клиентские ошибки | ||
| 400 | Bad Request | Сервер не может обработать запрос, поскольку он некорректно сформирован. |
| 401 | Unauthorized | Требуются корректные учётные данные для аутентификации — они отсутствуют или неверны. |
| 402 | Payment Required | Зарезервированный статус, на практике используется некоторыми API для лимитов оплаты. |
| 403 | Forbidden | Сервер понял запрос, но отказывается его авторизовать. |
| 404 | Not Found | По запрошенному URL не существует ни одного ресурса. |
| 405 | Method Not Allowed | URL существует, но не поддерживает этот HTTP-метод. |
| 406 | Not Acceptable | Ни одно представление не соответствует заголовкам согласования Accept. |
| 407 | Proxy Authentication Required | Клиент должен сначала аутентифицироваться на прокси. |
| 408 | Request Timeout | Сервер закрыл соединение, потому что запрос поступал слишком долго. |
| 409 | Conflict | Запрос конфликтует с текущим состоянием ресурса, например при коллизии правок. |
| 410 | Gone | Ресурс был намеренно удалён и не будет восстановлен. |
| 411 | Length Required | Запрос должен включать заголовок Content-Length. |
| 412 | Precondition Failed | Условный заголовок, например If-Match, оказался ложным. |
| 413 | Content Too Large | Тело запроса превышает размер, допустимый сервером. |
| 414 | URI Too Long | URL запроса длиннее, чем сервер способен разобрать. |
| 415 | Unsupported Media Type | Формат тела запроса не поддерживается для этого ресурса. |
| 416 | Range Not Satisfiable | Запрошенный диапазон байтов выходит за пределы размера ресурса. |
| 417 | Expectation Failed | Заголовок запроса Expect не удалось выполнить. |
| 418 | I'm a teapot | Первоапрельский статус из RFC 2324; некоторые API используют его как пасхалку. |
| 421 | Misdirected Request | Запрос достиг сервера, который не может сформировать ответ для этого узла (authority). |
| 422 | Unprocessable Content | Запрос корректно сформирован, но семантически недопустим — частый случай при валидации в REST. |
| 425 | Too Early | Сервер отказывается обрабатывать запрос, который может быть воспроизведён повторно (ранние данные TLS). |
| 426 | Upgrade Required | Клиент должен переключиться на другой протокол, указанный в Upgrade. |
| 428 | Precondition Required | Сервер требует условный запрос, чтобы предотвратить потерю обновлений. |
| 429 | Too Many Requests | Клиент превысил лимит запросов; Retry-After подсказывает, когда повторить попытку. |
| 431 | Request Header Fields Too Large | Заголовки, часто куки, превышают лимиты размера, установленные сервером. |
| 451 | Unavailable For Legal Reasons | Доступ заблокирован по юридическим причинам, например по решению суда. |
| 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 | Серверу не хватает места для хранения данных, необходимых для завершения запроса (WebDAV). |
| 508 | Loop Detected | Сервер обнаружил бесконечный цикл при обработке запроса (WebDAV). |
| 510 | Not Extended | Запросу требуются дополнительные расширения, которые не были предоставлены. |
| 511 | Network Authentication Required | Сеть (например, captive portal) сначала требует аутентификации. |
1xx Информационные
Информационные ответы подтверждают, что запрос получен и клиент может продолжать. Они промежуточные: после них всегда следует финальный статус. На практике вы чаще всего встретите 103 Early Hints, который позволяет серверу заранее отправить подсказки предзагрузки до готовности полного ответа.
2xx Успешные
Успешные ответы означают, что запрос понят и принят. 200 OK содержит результат в теле ответа, 201 Created сообщает о создании нового ресурса, а 204 No Content подтверждает успех, намеренно не возвращая ничего.
3xx Перенаправления
Ответы о перенаправлении указывают клиенту на другой адрес. Ключевое различие — постоянство: 301/308 постоянные, 302/307 временные — а также то, должен ли сохраняться HTTP-метод (307/308) или он может измениться на GET (301/302). 304 Not Modified — особый случай, на котором работает кэширование браузера.
4xx Клиентские ошибки
Клиентские ошибки означают, что сам запрос был отклонён. Самые частые: 400 — некорректный запрос, 401 — требуется аутентификация, 403 — доступ отказан, 404 — по этому URL ничего нет, и 429 — превышен лимит запросов.
5xx Серверные ошибки
Серверные ошибки означают, что сервер не справился с запросом, который мог быть вполне корректным. 500 — это сбой приложения, 502 и 504 — прокси сообщает о неработающем или молчащем вышестоящем сервере, а 503 — намеренная временная недоступность.
Как читать код состояния
Первая цифра определяет класс: 1xx — информационные, 2xx — успешные, 3xx — перенаправления, 4xx — клиентские ошибки, 5xx — серверные ошибки. Клиент, встретивший неизвестный код, может безопасно обработать его как код x00 своего класса — именно так новые коды остаются обратно совместимыми. При отладке всегда смотрите на заголовки ответа рядом с кодом: Location объясняет перенаправления, Allow объясняет 405, Retry-After объясняет 429 и 503.
Примеры
200 OK — page served normally 301 Moved Permanently — URL changed for good, follow Location 304 Not Modified — your cached copy is still valid 404 Not Found — nothing exists at this URL 429 Too Many Requests — rate limit hit, wait Retry-After seconds 503 Service Unavailable — temporary downtime or maintenance
Частые вопросы
Что такое HTTP 404?
HTTP 404 означает, что запрошенный ресурс не найден по указанному URL. Подробное руководство по 404 расскажет о причинах, способах исправления и влиянии на SEO.
В чём разница между 301 и 302?
Редирект 301 постоянный — ссылки и поисковые системы должны обновиться на новый URL. 302 сигнализирует о временном перемещении, при котором исходный URL остаётся каноническим.
Что означает 503?
HTTP 503 означает, что сервис временно недоступен, обычно из-за обслуживания или перегрузки, и клиенту следует повторить запрос через некоторое время.
В чём разница между 401 и 403?
401 означает, что серверу нужны корректные учётные данные для аутентификации. 403 означает, что он знает, кто вы, но всё равно отказывает в доступе — повторный вход не поможет.
В чём разница между 502 и 504?
Оба кода приходят от прокси, обращающегося к вышестоящему серверу: 502 означает, что вышестоящий сервер вернул некорректный ответ, 504 — что он вообще не ответил в течение таймаута.
Какие коды состояния важнее всего для SEO?
200 отмечает индексируемые страницы, 301/308 передают ранжирование при постоянных перемещениях, 404/410 убирают неработающие URL, а 503 защищает позиции в выдаче во время простоя, если отдаётся с Retry-After.