Перейти к основному содержимому
LibraTool logoLibraTool

Справочник кодов состояния HTTP — бесплатно

Справочник всех кодов состояния HTTP с поиском — что означает каждый, когда используется и какие бывают частые причины. От 100 до 511.

Работает офлайн после загрузки

61 код состояния

100

Продолжить

Сервер получил заголовки запроса, клиент может отправлять тело.

Используется для запросов с Expect: 100-continue. Сервер подтверждает готовность получить тело перед отправкой клиентом. Редко встречается в современных веб-приложениях.

RFC 9110 ↗
101

Переключение протоколов

Сервер переключается на протокол, запрошенный клиентом.

Чаще всего используется для обновления WebSocket — клиент запрашивает Upgrade: websocket, а сервер отвечает 101 для переключения.

RFC 9110 ↗
102

Обработка

Сервер получил запрос и обрабатывает его, но ответ ещё недоступен.

Промежуточный ответ WebDAV, отправляемый для предотвращения тайм-аутов клиента при длительных операциях. Устарел — современные серверы не должны его отправлять.

RFC 2518 ↗
103

Предварительные подсказки

Предварительные заголовки перед финальным ответом.

Позволяет серверам отправлять заголовки Link (preload/preconnect) пока финальный ответ ещё готовится, чтобы браузеры могли раньше начать загружать критические ресурсы.

RFC 8297 ↗
200

OK

Запрос выполнен успешно.

Стандартный ответ об успехе. Значение зависит от HTTP-метода: GET → ресурс возвращён, POST/PUT → действие выполнено.

RFC 9110 ↗
201

Создано

Новый ресурс успешно создан.

Частый ответ после POST. Ответ должен включать заголовок Location, указывающий на URL нового ресурса.

RFC 9110 ↗
202

Принято

Запрос принят в обработку, но обработка не завершена.

Для асинхронных операций — сервер ставит работу в очередь. Клиент должен опросить конечную точку статуса или проверить позже.

RFC 9110 ↗
203

Неавторитетная информация

Ответ был изменён трансформирующим прокси.

Запрос выполнен, но промежуточный узел (например, кэширующий или трансформирующий прокси) изменил полезную нагрузку с исходного сервера — например, переупаковал изображения. На практике редко.

RFC 9110 ↗
204

Нет содержимого

Запрос выполнен, но ответ не содержит тела.

Часто используется для операций DELETE или обновлений PUT, которым не нужно возвращать тело. Клиент не должен уходить с текущей страницы.

RFC 9110 ↗
205

Сброс содержимого

Запрос выполнен; клиент должен сбросить представление документа.

Как 204, тело не возвращается — но клиенту также указано сбросить форму или представление, которое произвело запрос (например, очистить поля формы для следующей записи).

RFC 9110 ↗
206

Частичное содержимое

Сервер доставил только часть ресурса.

Ответ на запрос Range. Используется видеоплеерами и менеджерами загрузок для возобновления прерванных загрузок или потоковой передачи больших файлов.

RFC 9110 ↗
207

Множественный статус

Тело ответа содержит несколько кодов статуса для разных операций.

WebDAV: тело в формате XML сообщает результат нескольких подопераций независимо — например, пакетное перемещение, где некоторые элементы обработаны успешно, а другие с ошибкой.

RFC 4918 ↗
208

Уже сообщено

Члены коллекции уже указаны ранее в ответе.

WebDAV: используется внутри ответов 207 Multi-Status для предотвращения повторного перечисления членов одной и той же коллекции, когда привязки создают циклы.

RFC 5842 ↗
226

IM использовано

Ответ — результат манипуляций с экземпляром, применённых к ресурсу.

Дельта-кодирование: сервер возвращает разницу с предыдущей версией вместо полного ресурса, экономя пропускную способность. Очень редко реализуется.

RFC 3229 ↗
300

Множественный выбор

Доступны несколько представлений ресурса.

Сервер предлагает несколько вариантов (например, разные форматы или языки) и клиент должен выбрать один. Редко используется, так как автоматическое согласование содержимого обычно это решает.

RFC 9110 ↗
301

Перемещено навсегда

Ресурс навсегда переместился на новый URL.

Используйте для постоянного изменения URL — поисковые системы обновят свой индекс. SEO-авторитет передаётся новому URL.

RFC 9110 ↗
302

Найдено (временный редирект)

Ресурс временно находится на другом URL.

Указывает, что редирект не является постоянным. Кэширование менее агрессивно, чем при 301. Используйте для ситуаций вроде «требуется вход, редирект на /login».

RFC 9110 ↗
303

См. другой

Редирект на другой URL с использованием GET.

Используется после отправки POST — ответ говорит «ваш POST сработал, см. этот GET URL для результата». Браузеры всегда делают GET нового URL.

RFC 9110 ↗
304

Не изменено

Кэшированная версия по-прежнему действительна; используйте её.

Ответ на условный запрос (с заголовками If-None-Match или If-Modified-Since). Экономит пропускную способность — тело не возвращается.

RFC 9110 ↗
307

Временный редирект

Как 302, но сохраняет исходный HTTP-метод.

Если исходный был POST, редирект также использует POST. Современная альтернатива 302, когда сохранение метода важно.

RFC 9110 ↗
308

Постоянный редирект

Как 301, но сохраняет исходный HTTP-метод.

Современная замена 301, когда вы хотите, чтобы POST-запросы остались POST-запросами после редиректа.

RFC 9110 ↗
400

Неверный запрос

Сервер не мог понять запрос из-за неверного синтаксиса.

Типичные причины: неверный JSON в теле, неверные параметры запроса или отсутствующие обязательные поля. Проверьте тело запроса и заголовки.

RFC 9110 ↗
401

Не авторизовано

Требуется аутентификация и она не предоставлена.

Клиент должен включить учётные данные аутентификации (заголовок Authorization, cookie, токен). «Unauthorized» — неправильный термин — на самом деле это значит «не аутентифицирован».

RFC 9110 ↗
402

Платёж требуется

Зарезервировано для будущего использования — иногда используется для платных уровней API.

Первоначально предназначено для цифровых платежей. Современное использование: API иногда возвращают 402, когда пользователь превысил платную квоту.

RFC 9110 ↗
403

Запрещено

Клиент аутентифицирован, но не имеет разрешения.

Отличается от 401 — пользователь ВОШЁЛ, но его учётная запись не имеет разрешения для этого ресурса. Проверьте логику ролей/разрешений.

RFC 9110 ↗
404

Не найдено

Запрошенный ресурс не существует.

Либо URL неверный, либо ресурс был удалён, либо он никогда не существовал. Серверы иногда возвращают 404 для скрытия того, что 403 была бы точнее.

RFC 9110 ↗
405

Метод не разрешён

HTTP-метод, использованный для этого ресурса, не разрешён.

Например, GET-запрос к конечной точке, которая принимает только POST. Ответ должен включать заголовок Allow, перечисляющий допустимые методы.

RFC 9110 ↗
406

Неприемлемо

Ни одно представление не соответствует заголовкам Accept клиента.

Клиент запросил тип содержимого, язык или кодировку (через Accept, Accept-Language, Accept-Encoding), которые сервер не может удовлетворить. Многие серверы пропускают строгое согласование и возвращают значение по умолчанию.

RFC 9110 ↗
407

Требуется аутентификация прокси

Клиент должен сначала пройти аутентификацию с прокси.

Как 401, но выданный прокси: клиент должен отправить учётные данные Proxy-Authorization. Встречается в корпоративных сетях с аутентифицирующими прокси.

RFC 9110 ↗
408

Превышено время ожидания запроса

Время ожидания запроса сервером истекло.

Клиент слишком долго отправлял тело запроса или держал соединение неактивным. Повторите запрос.

RFC 9110 ↗
409

Конфликт

Запрос конфликтует с текущим состоянием ресурса.

Обычно возвращается при конфликтах одновременного редактирования или дублировании создания ресурса (например, создание пользователя с адресом электронной почты, который уже существует).

RFC 9110 ↗
410

Удалено

Ресурс был удалён и больше не вернётся.

Более строгое, чем 404 — сервер явно знает, что ресурс СУЩЕСТВОВАЛ, но был окончательно удалён. Поисковые системы удалят его из индекса.

RFC 9110 ↗
411

Требуется длина

Сервер требует заголовок Content-Length.

Запрос был отклонён, так как отсутствовал заголовок Content-Length, а сервер отказывается обрабатывать тела неизвестного размера. Добавьте заголовок и повторите попытку.

RFC 9110 ↗
412

Предварительное условие не выполнено

Условие в заголовках запроса не было выполнено.

Возвращается, когда условные заголовки, такие как If-Match или If-Unmodified-Since, не выполняются — обычно это оптимистичная блокировка: кто-то другой изменил ресурс с момента вашей версии. Получите ресурс заново и повторите попытку.

RFC 9110 ↗
413

Слишком большая полезная нагрузка

Тело запроса превышает ограничение размера сервера.

Обычно при загрузке больших файлов. Конфигурация сервера (nginx, apache) устанавливает максимальный размер тела. Проверьте конфигурацию сервера.

RFC 9110 ↗
414

URI слишком длинный

URL запроса превышает ограничение длины сервера.

Обычно вызывается очень длинными строками запроса (например, кодирование данных в GET). Переключитесь на тело POST или увеличьте лимит сервера, если вы его контролируете.

RFC 9110 ↗
415

Неподдерживаемый тип мультимедиа

Сервер не может обработать отправленный Content-Type.

Например, отправка application/xml на сервер, который принимает только application/json. Правильно установите заголовок Content-Type.

RFC 9110 ↗
416

Диапазон не удовлетворен

Запрошенный диапазон байтов находится вне размера ресурса.

Заголовок Range запрашивает часть, которая не существует в файле — например, возобновление загрузки после конца файла. Ответ должен включать Content-Range с фактическим размером.

RFC 9110 ↗
417

Ожидание не выполнено

Сервер не может удовлетворить требования заголовка Expect.

Отправляется, когда сервер не поддерживает Expect: 100-continue. Некоторые клиенты отправляют этот заголовок по умолчанию при больших POST-запросах; отключение его обычно решает проблему.

RFC 9110 ↗
418

Я чайник

Сервер отказывает заварить кофе, потому что это чайник.

Апрельская шутка с 1998 года (RFC 2324). Некоторые реальные API используют её для шуток или обозначения устаревших конечных точек. Не для использования в production.

RFC 2324 ↗
421

Неправильно направленный запрос

Запрос был отправлен на сервер, который не может выдать на него ответ.

Обычно при повторном использовании соединения HTTP/2: запрос достиг сервера, который не настроен для целевого имени хоста. Клиент должен повторить попытку на новом соединении.

RFC 9110 ↗
422

Необработанное содержимое

Запрос был синтаксически корректен, но семантически неправильный.

Например, JSON был корректно распарсен, но отсутствовало требуемое поле, или значение поля было вне диапазона. Распространено в ответах проверки REST API.

RFC 9110 ↗
423

Заблокировано

Ресурс заблокирован.

WebDAV: исходный или целевой ресурс заблокирован другим клиентом, поэтому операция не может быть выполнена. Дождитесь освобождения блокировки или разблокируйте её с правильным токеном.

RFC 4918 ↗
424

Неудачная зависимость

Запрос не удался, потому что предыдущий зависимый запрос не удался.

WebDAV: в цепочке зависимых операций более раннее действие не удалось, поэтому эта операция не была выполнена. Посмотрите на более раннюю ошибку, чтобы найти первопричину.

RFC 4918 ↗
425

Слишком рано

Сервер отказывается обрабатывать запрос, который может быть повторён.

Связано с TLS 1.3 0-RTT (ранние данные): сервер не будет рисковать обработкой возможно повторённого запроса. Клиент должен повторить попытку после завершения handshake.

RFC 8470 ↗
426

Требуется обновление

Клиент должен переключиться на другой протокол.

Сервер отказывается обслуживать запрос по текущему протоколу, но будет после обновления — ответ включает заголовок Upgrade, указывающий требуемый протокол.

RFC 9110 ↗
428

Требуется предварительное условие

Сервер требует, чтобы запрос был условным.

Сервер требует условные заголовки (такие как If-Match) для предотвращения конфликтов потери обновлений. Получите ресурс заново, сохраните его ETag и отправьте запрос повторно с If-Match.

RFC 6585 ↗
429

Слишком много запросов

Клиент ограничивается по скорости.

Замедлитесь. Ответ должен включать заголовок Retry-After, указывающий, когда повторить попытку. Распространено с API, которые имеют квоты запросов.

RFC 6585 ↗
431

Поля заголовка запроса слишком велики

Заголовки слишком велики для обработки сервером.

Либо один заголовок, либо общий размер заголовка превышает лимит — чаще всего вызывается переполненными cookies. Очистите cookies или уменьшите то, что ваше приложение в них хранит.

RFC 6585 ↗
451

Недоступно по правовым причинам

Доступ запрещён из-за правовых требований.

Ресурс заблокирован по правовым причинам — цензура, судебные приказы или региональные правила. Номер является намёком на роман «451 градус по Фаренгейту».

RFC 7725 ↗
500

Внутренняя ошибка сервера

Сервер встретил неожиданное состояние.

Универсальный обработчик для ошибок на стороне сервера. Проверьте логи сервера для фактической причины: необработанное исключение, ошибка БД и т.д.

RFC 9110 ↗
501

Не реализовано

Сервер не поддерживает запрошенную функцию.

Например, сервер не распознает метод HTTP. Редко на практике — чаще вы увидите 405.

RFC 9110 ↗
502

Плохой шлюз

Сервер в роли шлюза получил плохой ответ от upstream сервера.

Обычно в архитектуре микросервисов. Ваш load balancer или reverse proxy получил неправильный ответ от backend сервиса.

RFC 9110 ↗
503

Сервис недоступен

Сервер временно не может обработать запрос.

Либо на обслуживании, либо перегружен. Ответ должен включать заголовок Retry-After. Часто возвращается во время развёртывания.

RFC 9110 ↗
504

Тайм-аут шлюза

Сервер шлюза не дождался ответа от вышестоящего сервера.

Backend сервис не ответил достаточно быстро. Проверьте здоровье upstream сервиса и конфигурацию timeout.

RFC 9110 ↗
505

Версия HTTP не поддерживается

Сервер не поддерживает версию HTTP, использованную в запросе.

Основная версия HTTP запроса не поддерживается сервером. Почти никогда не встречается с современными клиентами.

RFC 9110 ↗
506

Также согласует вариант

Сервер имеет ошибку конфигурации согласования содержимого.

Согласование содержимого привело к циклу: выбранный вариант сам настроен на согласование. Указывает на ошибку конфигурации сервера.

RFC 2295 ↗
507

Недостаточно хранилища

На сервере закончилось место на диске.

WebDAV-специфичный по происхождению, но иногда используется общими серверами. Означает, что сервер не может сохранить запрос из-за ограничений хранилища.

RFC 4918 ↗
508

Обнаружен цикл

Сервер обнаружил бесконечный цикл при обработке запроса.

WebDAV: обработка запроса Depth: infinity вошла в цикл (например, циклические привязки). Операция была прервана.

RFC 5842 ↗
510

Не расширено

Требуются дополнительные расширения к запросу.

Из устаревшей HTTP Extension Framework: сервер нуждается в дополнительной информации перед выполнением запроса. Практически не используется в современной сети.

RFC 2774 ↗
511

Требуется аутентификация в сети

Клиент должен пройти аутентификацию для получения доступа в сеть.

Используется captive-порталами (Wi-Fi в отелях и аэропортах), чтобы указать, что пользователь должен войти в сеть перед доступом на внешние сайты.

RFC 6585 ↗

Частые применения

  • Справочник по проектированию APIПри проектировании REST API выберите правильный код состояния для каждого ответа.
  • Быстрый поиск кодов ошибокКогда ваше приложение возвращает запутанную ошибку HTTP, узнайте, что она на самом деле означает.
  • Узнайте коды состояния HTTPВсеобъемлющий справочник для студентов и разработчиков, изучающих HTTP и REST.
  • Быстрый справочник во время инцидентовВо время производственных инцидентов быстро узнайте, что означает каждый код состояния.
  • Справка по документации APIПри написании документации API ссылайтесь на авторитетные описания возвращаемых кодов состояния.

Как это работает

Этот инструмент — клиентская справка, построенная вокруг жёстко закодированной справочной таблицы из 63 кодов состояния HTTP, охватывающих все пять классов (1xx–5xx), каждый снабжён аннотацией с номером определяющего RFC. Нет обращения к серверу, внешнего API и сетевого запроса — вся фильтрация и отображение происходят в браузере с использованием встроенных методов массива и строки JavaScript.

  1. 1
    Загружена справочная таблица
    Полный набор из 63 зарегистрированных IANA кодов состояния встроен прямо в этот инструмент как массив JavaScript, каждая запись несёт числовой код, каноничное английское имя, класс категории и конкретный RFC, который его определяет (например, RFC 9110 для большинства кодов HTTP/1.1, RFC 6585 для 429 Too Many Requests, RFC 2324 для 418 I'm a Teapot).
  2. 2
    Фильтр работает в памяти
    По мере ввода или выбора фильтра категории Array.filter JavaScript работает по списку в памяти, сопоставляя ваш запрос с номером кода состояния, каноничным именем и обеими строками короткого и длинного описания, используя String.includes — без задержки, без обращения к серверу.
  3. 3
    Детали раскрываются со ссылкой RFC
    Каждый результат рендерится как HTML-элемент details/summary. Раскрытие записи показывает объяснение в развёрнутой форме и прямую ссылку на авторитетный RFC на rfc-editor.org, так что вы можете прочитать точный текст спецификации для любого кода.
  4. 4
    Глубокие ссылки и копирование в буфер обмена
    Открытие записи обновляет хэш URL на номер кода (например, #404), делая страницу доступной для обмена и удобной для закладок. Кнопка копирования записывает каноничную строку (например, '404 Not Found') в буфер обмена через API navigator.clipboard браузера.

Похожие инструменты

Часто задаваемые вопросы