Skip to content

Коды состояния HTTP объяснённые

Все распространённые коды состояния HTTP-ответов, сгруппированные по классам: что они означают и когда вы их увидите. Краткий справочник — спутник инструмента «Коды состояния HTTP».

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

Справочная таблица · 55 записиОткрыть инструмент http-status-codes →
55 of 55 rows
1xx Информационные
ContinueСервер получил заголовки запроса, и клиент может отправлять тело.После предварительной проверки перед загрузкой большого тела.
Switching ProtocolsСервер согласился переключиться на запрошенный клиентом протокол.Перевод HTTP-соединения на WebSocket.
ProcessingСервер получил запрос и всё ещё обрабатывает его.Сервер WebDAV подтверждает длинный запрос, чтобы клиент не дождался тайм-аута.
Early HintsСервер шлёт предварительные заголовки до готовности окончательного ответа.Браузер заранее загружает ресурсы, пока страница ещё рендерится.
2xx Успех
OKЗапрос выполнен, тело ответа содержит результат.Стандартный успех для GET или PUT.
CreatedЗапрос выполнен, и новый ресурс создан.Возвращается после успешного POST, который что-то создаёт.
AcceptedЗапрос принят к обработке, но ещё не завершён.Длительная задача запущена и выполняется асинхронно.
Non-Authoritative InformationЗапрос выполнен, но возвращённые данные были изменены по пути назад.Прокси или кеш отдаёт изменённые метаданные вместо метаданных источника.
No ContentЗапрос выполнен, и возвращать тело нечего.Успешный DELETE или PUT, о котором нечего сказать.
Reset ContentЗапрос выполнен, и клиенту следует сбросить отправившее его представление.После отправки формы — указание странице очистить поля.
Partial ContentСервер возвращает лишь часть ресурса, как и запрошено.Отдача диапазона байтов по запросу Range.
3xx Перенаправление
Moved PermanentlyУ ресурса новый постоянный URL, и будущие запросы должны использовать его.Страница переехала, и поисковики должны обновить индекс.
FoundРесурс временно находится по другому URL, но продолжайте пользоваться исходным.Временное перенаправление на страницу входа.
See OtherОтвет находится по другому URL, и получать его нужно методом GET.Паттерн PRG: POST перенаправляется на страницу результата, чтобы обновление не отправило его повторно.
Not ModifiedКопия в кеше всё ещё актуальна, поэтому сервер не шлёт тело.Условный GET, при котором кеш клиента актуален.
Use ProxyЗапрос должен быть отправлен через прокси, указанный в ответе.Устаревшие прокси-сети; deprecated с 2011 года.
Temporary RedirectРесурс временно находится в другом месте, и исходный метод запроса должен быть сохранён.Как 302, но POST остаётся POST при перенаправлении.
Permanent RedirectУ ресурса новый постоянный URL, и исходный метод запроса должен быть сохранён.Как 301, но POST остаётся POST при перенаправлении.
4xx Ошибка клиента
Bad RequestСервер не понял запрос из-за некорректного синтаксиса.Битый JSON или отсутствующее обязательное поле.
UnauthorizedТребуется аутентификация — её не было или она не удалась.Нет токена, либо токен недействителен или истёк.
Payment RequiredЗапрос требует оплаты, хотя спецификация так и не определила, как именно.Некоторые API используют его как маркер платного доступа; большинство — никогда.
ForbiddenКлиент аутентифицирован, но не имеет доступа к этому ресурсу.Верный логин, но нет прав на этот ресурс.
Not FoundНа этом URL у сервера нет ресурса.Неизвестный URL или несуществующий идентификатор.
Method Not AllowedURL существует, но не допускает использованный метод запроса.POST к эндпоинту, который принимает только GET.
Not AcceptableСервер не может вернуть содержимое, соответствующее заголовкам Accept клиента.Клиент просил только XML, а API отдаёт лишь JSON.
Proxy Authentication RequiredКлиент должен пройти аутентификацию на прокси, прежде чем запрос продолжит путь.Корпоративный прокси отклоняет неаутентифицированный запрос.
Request TimeoutКлиент слишком долго отправлял запрос, и сервер сдался.Загрузка остановилась до полного прихода тела.
ConflictЗапрос конфликтует с текущим состоянием ресурса.Дубликат email или гонка правок одной записи.
GoneРесурс когда-то существовал, но удалён навсегда.Эндпоинт намеренно выведен из эксплуатации; сильнее, чем 404.
Length RequiredЗапросу нужен заголовок Content-Length, а его нет.Сервер, которому нужен размер заранее, отклоняет тело, передаваемое потоком.
Precondition FailedПредусловие в заголовке, например If-Match, вычислилось как ложь.Оптимистичная правка, где запись изменилась с момента чтения клиентом.
Content Too LargeТело запроса превышает принимаемый сервером лимит.Загрузка больше максимального размера тела на сервере.
URI Too LongURL запроса длиннее, чем сервер готов интерпретировать.Форма, случайно сериализованная в query string GET и разросшаяся без предела.
Unsupported Media TypeФормат тела запроса не принимается этим эндпоинтом.POST с Content-Type text/plain к эндпоинту, работающему только с JSON.
Range Not SatisfiableДиапазон байтов в заголовке Range не умещается в ресурс.Запрос байтов за концом файла при возобновлении загрузки.
Expectation FailedСервер не может выполнить ожидание, указанное в заголовке Expect.Ожидание 100-continue, которое сервер отказывается соблюдать.
I'm a teapotСервер — это чайник и отказывается заваривать кофе.Первоапрельская шутка 1998 года, которая не умирает; API возвращают её ради шутки.
Misdirected RequestЗапрос попал на сервер, который не может дать на него ответ.Переиспользованное соединение направлено к хосту, который этот сервер не обслуживает.
Unprocessable EntityЗапрос синтаксически корректен, но значения не проходят смысловую валидацию.Корректный JSON, поля которого нарушают бизнес-правила.
Too EarlyСервер отклоняет запрос, который может оказаться повтором (replay).Отклонение повторной неидемпотентной попытки до ротации ключей.
Upgrade RequiredКлиент должен перейти на другой протокол, чтобы использовать этот ресурс.Эндпоинт, настаивающий на TLS или WebSocket.
Precondition RequiredСервер требует условные заголовки, которых запрос не прислал.API, требующее If-Match для защиты от потерянных обновлений.
Too Many RequestsКлиент отправил слишком много запросов за отведённый интервал времени.Достигнут rate limit; сделайте паузу и повторите.
Request Header Fields Too LargeОдно или несколько полей заголовка слишком велики для обработки сервером.Cookie или токен разрослись, пока не заблокировали каждый запрос к сайту.
Unavailable For Legal ReasonsРесурс заблокирован по юридическим причинам — например, из-за требования удалить контент или гео-ограничения.Требование госоргана или страница, заблокированная в одной стране.
5xx Ошибка сервера
Internal Server ErrorСервер столкнулся с непредвиденным состоянием и упал.Необработанное исключение или баг на сервере.
Not ImplementedСервер не поддерживает запрошенный метод или возможность.Эндпоинт объявлен, но ещё не реализован.
Bad GatewayШлюз или прокси получил недопустимый ответ от вышестоящего сервера.Обратный прокси не смог достучаться до бэкенда.
Service UnavailableСервер временно не может обработать запрос.Обслуживание, перегрузка или недоступность зависимого сервиса.
Gateway TimeoutШлюз или прокси не получил ответ вовремя от вышестоящего сервера.Бэкенд отвечал слишком долго, и прокси сдался.
HTTP Version Not SupportedСервер не поддерживает версию HTTP из запроса.Клиент говорит на версии протокола, которой сервер так и не выучил.
Variant Also NegotiatesПрозрачное согласование содержимого завершилось циклической ссылкой.Неверно настроенный сервер с экспериментальным согласованием содержимого.
Insufficient StorageСервер не может сохранить представление, нужное для завершения запроса.Сервер WebDAV, у которого выделенное хранилище заполнено.
Loop DetectedСервер попал в бесконечный цикл при обработке запроса.Связка WebDAV, ссылающаяся на саму себя.
Network Authentication RequiredКлиент должен пройти аутентификацию в сети, чтобы получить доступ.Captive portal в отеле или аэропорту, перехватывающий запрос.