Справочник кодов состояния HTTP — бесплатно
Справочник всех кодов состояния HTTP с поиском — что означает каждый, когда используется и какие бывают частые причины. От 100 до 511.
61 код состояния
100Продолжить
Сервер получил заголовки запроса, клиент может отправлять тело.
Продолжить
Сервер получил заголовки запроса, клиент может отправлять тело.
Используется для запросов с Expect: 100-continue. Сервер подтверждает готовность получить тело перед отправкой клиентом. Редко встречается в современных веб-приложениях.
101Переключение протоколов
Сервер переключается на протокол, запрошенный клиентом.
Переключение протоколов
Сервер переключается на протокол, запрошенный клиентом.
Чаще всего используется для обновления WebSocket — клиент запрашивает Upgrade: websocket, а сервер отвечает 101 для переключения.
102Обработка
Сервер получил запрос и обрабатывает его, но ответ ещё недоступен.
Обработка
Сервер получил запрос и обрабатывает его, но ответ ещё недоступен.
Промежуточный ответ WebDAV, отправляемый для предотвращения тайм-аутов клиента при длительных операциях. Устарел — современные серверы не должны его отправлять.
103Предварительные подсказки
Предварительные заголовки перед финальным ответом.
Предварительные подсказки
Предварительные заголовки перед финальным ответом.
Позволяет серверам отправлять заголовки Link (preload/preconnect) пока финальный ответ ещё готовится, чтобы браузеры могли раньше начать загружать критические ресурсы.
200OK
Запрос выполнен успешно.
OK
Запрос выполнен успешно.
Стандартный ответ об успехе. Значение зависит от HTTP-метода: GET → ресурс возвращён, POST/PUT → действие выполнено.
201Создано
Новый ресурс успешно создан.
Создано
Новый ресурс успешно создан.
Частый ответ после POST. Ответ должен включать заголовок Location, указывающий на URL нового ресурса.
202Принято
Запрос принят в обработку, но обработка не завершена.
Принято
Запрос принят в обработку, но обработка не завершена.
Для асинхронных операций — сервер ставит работу в очередь. Клиент должен опросить конечную точку статуса или проверить позже.
203Неавторитетная информация
Ответ был изменён трансформирующим прокси.
Неавторитетная информация
Ответ был изменён трансформирующим прокси.
Запрос выполнен, но промежуточный узел (например, кэширующий или трансформирующий прокси) изменил полезную нагрузку с исходного сервера — например, переупаковал изображения. На практике редко.
204Нет содержимого
Запрос выполнен, но ответ не содержит тела.
Нет содержимого
Запрос выполнен, но ответ не содержит тела.
Часто используется для операций DELETE или обновлений PUT, которым не нужно возвращать тело. Клиент не должен уходить с текущей страницы.
205Сброс содержимого
Запрос выполнен; клиент должен сбросить представление документа.
Сброс содержимого
Запрос выполнен; клиент должен сбросить представление документа.
Как 204, тело не возвращается — но клиенту также указано сбросить форму или представление, которое произвело запрос (например, очистить поля формы для следующей записи).
206Частичное содержимое
Сервер доставил только часть ресурса.
Частичное содержимое
Сервер доставил только часть ресурса.
Ответ на запрос Range. Используется видеоплеерами и менеджерами загрузок для возобновления прерванных загрузок или потоковой передачи больших файлов.
207Множественный статус
Тело ответа содержит несколько кодов статуса для разных операций.
Множественный статус
Тело ответа содержит несколько кодов статуса для разных операций.
WebDAV: тело в формате XML сообщает результат нескольких подопераций независимо — например, пакетное перемещение, где некоторые элементы обработаны успешно, а другие с ошибкой.
208Уже сообщено
Члены коллекции уже указаны ранее в ответе.
Уже сообщено
Члены коллекции уже указаны ранее в ответе.
WebDAV: используется внутри ответов 207 Multi-Status для предотвращения повторного перечисления членов одной и той же коллекции, когда привязки создают циклы.
226IM использовано
Ответ — результат манипуляций с экземпляром, применённых к ресурсу.
IM использовано
Ответ — результат манипуляций с экземпляром, применённых к ресурсу.
Дельта-кодирование: сервер возвращает разницу с предыдущей версией вместо полного ресурса, экономя пропускную способность. Очень редко реализуется.
300Множественный выбор
Доступны несколько представлений ресурса.
Множественный выбор
Доступны несколько представлений ресурса.
Сервер предлагает несколько вариантов (например, разные форматы или языки) и клиент должен выбрать один. Редко используется, так как автоматическое согласование содержимого обычно это решает.
301Перемещено навсегда
Ресурс навсегда переместился на новый URL.
Перемещено навсегда
Ресурс навсегда переместился на новый URL.
Используйте для постоянного изменения URL — поисковые системы обновят свой индекс. SEO-авторитет передаётся новому URL.
302Найдено (временный редирект)
Ресурс временно находится на другом URL.
Найдено (временный редирект)
Ресурс временно находится на другом URL.
Указывает, что редирект не является постоянным. Кэширование менее агрессивно, чем при 301. Используйте для ситуаций вроде «требуется вход, редирект на /login».
303См. другой
Редирект на другой URL с использованием GET.
См. другой
Редирект на другой URL с использованием GET.
Используется после отправки POST — ответ говорит «ваш POST сработал, см. этот GET URL для результата». Браузеры всегда делают GET нового URL.
304Не изменено
Кэшированная версия по-прежнему действительна; используйте её.
Не изменено
Кэшированная версия по-прежнему действительна; используйте её.
Ответ на условный запрос (с заголовками If-None-Match или If-Modified-Since). Экономит пропускную способность — тело не возвращается.
307Временный редирект
Как 302, но сохраняет исходный HTTP-метод.
Временный редирект
Как 302, но сохраняет исходный HTTP-метод.
Если исходный был POST, редирект также использует POST. Современная альтернатива 302, когда сохранение метода важно.
308Постоянный редирект
Как 301, но сохраняет исходный HTTP-метод.
Постоянный редирект
Как 301, но сохраняет исходный HTTP-метод.
Современная замена 301, когда вы хотите, чтобы POST-запросы остались POST-запросами после редиректа.
400Неверный запрос
Сервер не мог понять запрос из-за неверного синтаксиса.
Неверный запрос
Сервер не мог понять запрос из-за неверного синтаксиса.
Типичные причины: неверный JSON в теле, неверные параметры запроса или отсутствующие обязательные поля. Проверьте тело запроса и заголовки.
401Не авторизовано
Требуется аутентификация и она не предоставлена.
Не авторизовано
Требуется аутентификация и она не предоставлена.
Клиент должен включить учётные данные аутентификации (заголовок Authorization, cookie, токен). «Unauthorized» — неправильный термин — на самом деле это значит «не аутентифицирован».
402Платёж требуется
Зарезервировано для будущего использования — иногда используется для платных уровней API.
Платёж требуется
Зарезервировано для будущего использования — иногда используется для платных уровней API.
Первоначально предназначено для цифровых платежей. Современное использование: API иногда возвращают 402, когда пользователь превысил платную квоту.
403Запрещено
Клиент аутентифицирован, но не имеет разрешения.
Запрещено
Клиент аутентифицирован, но не имеет разрешения.
Отличается от 401 — пользователь ВОШЁЛ, но его учётная запись не имеет разрешения для этого ресурса. Проверьте логику ролей/разрешений.
404Не найдено
Запрошенный ресурс не существует.
Не найдено
Запрошенный ресурс не существует.
Либо URL неверный, либо ресурс был удалён, либо он никогда не существовал. Серверы иногда возвращают 404 для скрытия того, что 403 была бы точнее.
405Метод не разрешён
HTTP-метод, использованный для этого ресурса, не разрешён.
Метод не разрешён
HTTP-метод, использованный для этого ресурса, не разрешён.
Например, GET-запрос к конечной точке, которая принимает только POST. Ответ должен включать заголовок Allow, перечисляющий допустимые методы.
406Неприемлемо
Ни одно представление не соответствует заголовкам Accept клиента.
Неприемлемо
Ни одно представление не соответствует заголовкам Accept клиента.
Клиент запросил тип содержимого, язык или кодировку (через Accept, Accept-Language, Accept-Encoding), которые сервер не может удовлетворить. Многие серверы пропускают строгое согласование и возвращают значение по умолчанию.
407Требуется аутентификация прокси
Клиент должен сначала пройти аутентификацию с прокси.
Требуется аутентификация прокси
Клиент должен сначала пройти аутентификацию с прокси.
Как 401, но выданный прокси: клиент должен отправить учётные данные Proxy-Authorization. Встречается в корпоративных сетях с аутентифицирующими прокси.
408Превышено время ожидания запроса
Время ожидания запроса сервером истекло.
Превышено время ожидания запроса
Время ожидания запроса сервером истекло.
Клиент слишком долго отправлял тело запроса или держал соединение неактивным. Повторите запрос.
409Конфликт
Запрос конфликтует с текущим состоянием ресурса.
Конфликт
Запрос конфликтует с текущим состоянием ресурса.
Обычно возвращается при конфликтах одновременного редактирования или дублировании создания ресурса (например, создание пользователя с адресом электронной почты, который уже существует).
410Удалено
Ресурс был удалён и больше не вернётся.
Удалено
Ресурс был удалён и больше не вернётся.
Более строгое, чем 404 — сервер явно знает, что ресурс СУЩЕСТВОВАЛ, но был окончательно удалён. Поисковые системы удалят его из индекса.
411Требуется длина
Сервер требует заголовок Content-Length.
Требуется длина
Сервер требует заголовок Content-Length.
Запрос был отклонён, так как отсутствовал заголовок Content-Length, а сервер отказывается обрабатывать тела неизвестного размера. Добавьте заголовок и повторите попытку.
412Предварительное условие не выполнено
Условие в заголовках запроса не было выполнено.
Предварительное условие не выполнено
Условие в заголовках запроса не было выполнено.
Возвращается, когда условные заголовки, такие как If-Match или If-Unmodified-Since, не выполняются — обычно это оптимистичная блокировка: кто-то другой изменил ресурс с момента вашей версии. Получите ресурс заново и повторите попытку.
413Слишком большая полезная нагрузка
Тело запроса превышает ограничение размера сервера.
Слишком большая полезная нагрузка
Тело запроса превышает ограничение размера сервера.
Обычно при загрузке больших файлов. Конфигурация сервера (nginx, apache) устанавливает максимальный размер тела. Проверьте конфигурацию сервера.
414URI слишком длинный
URL запроса превышает ограничение длины сервера.
URI слишком длинный
URL запроса превышает ограничение длины сервера.
Обычно вызывается очень длинными строками запроса (например, кодирование данных в GET). Переключитесь на тело POST или увеличьте лимит сервера, если вы его контролируете.
415Неподдерживаемый тип мультимедиа
Сервер не может обработать отправленный Content-Type.
Неподдерживаемый тип мультимедиа
Сервер не может обработать отправленный Content-Type.
Например, отправка application/xml на сервер, который принимает только application/json. Правильно установите заголовок Content-Type.
416Диапазон не удовлетворен
Запрошенный диапазон байтов находится вне размера ресурса.
Диапазон не удовлетворен
Запрошенный диапазон байтов находится вне размера ресурса.
Заголовок Range запрашивает часть, которая не существует в файле — например, возобновление загрузки после конца файла. Ответ должен включать Content-Range с фактическим размером.
417Ожидание не выполнено
Сервер не может удовлетворить требования заголовка Expect.
Ожидание не выполнено
Сервер не может удовлетворить требования заголовка Expect.
Отправляется, когда сервер не поддерживает Expect: 100-continue. Некоторые клиенты отправляют этот заголовок по умолчанию при больших POST-запросах; отключение его обычно решает проблему.
418Я чайник
Сервер отказывает заварить кофе, потому что это чайник.
Я чайник
Сервер отказывает заварить кофе, потому что это чайник.
Апрельская шутка с 1998 года (RFC 2324). Некоторые реальные API используют её для шуток или обозначения устаревших конечных точек. Не для использования в production.
421Неправильно направленный запрос
Запрос был отправлен на сервер, который не может выдать на него ответ.
Неправильно направленный запрос
Запрос был отправлен на сервер, который не может выдать на него ответ.
Обычно при повторном использовании соединения HTTP/2: запрос достиг сервера, который не настроен для целевого имени хоста. Клиент должен повторить попытку на новом соединении.
422Необработанное содержимое
Запрос был синтаксически корректен, но семантически неправильный.
Необработанное содержимое
Запрос был синтаксически корректен, но семантически неправильный.
Например, JSON был корректно распарсен, но отсутствовало требуемое поле, или значение поля было вне диапазона. Распространено в ответах проверки REST API.
423Заблокировано
Ресурс заблокирован.
Заблокировано
Ресурс заблокирован.
WebDAV: исходный или целевой ресурс заблокирован другим клиентом, поэтому операция не может быть выполнена. Дождитесь освобождения блокировки или разблокируйте её с правильным токеном.
424Неудачная зависимость
Запрос не удался, потому что предыдущий зависимый запрос не удался.
Неудачная зависимость
Запрос не удался, потому что предыдущий зависимый запрос не удался.
WebDAV: в цепочке зависимых операций более раннее действие не удалось, поэтому эта операция не была выполнена. Посмотрите на более раннюю ошибку, чтобы найти первопричину.
425Слишком рано
Сервер отказывается обрабатывать запрос, который может быть повторён.
Слишком рано
Сервер отказывается обрабатывать запрос, который может быть повторён.
Связано с TLS 1.3 0-RTT (ранние данные): сервер не будет рисковать обработкой возможно повторённого запроса. Клиент должен повторить попытку после завершения handshake.
426Требуется обновление
Клиент должен переключиться на другой протокол.
Требуется обновление
Клиент должен переключиться на другой протокол.
Сервер отказывается обслуживать запрос по текущему протоколу, но будет после обновления — ответ включает заголовок Upgrade, указывающий требуемый протокол.
428Требуется предварительное условие
Сервер требует, чтобы запрос был условным.
Требуется предварительное условие
Сервер требует, чтобы запрос был условным.
Сервер требует условные заголовки (такие как If-Match) для предотвращения конфликтов потери обновлений. Получите ресурс заново, сохраните его ETag и отправьте запрос повторно с If-Match.
429Слишком много запросов
Клиент ограничивается по скорости.
Слишком много запросов
Клиент ограничивается по скорости.
Замедлитесь. Ответ должен включать заголовок Retry-After, указывающий, когда повторить попытку. Распространено с API, которые имеют квоты запросов.
431Поля заголовка запроса слишком велики
Заголовки слишком велики для обработки сервером.
Поля заголовка запроса слишком велики
Заголовки слишком велики для обработки сервером.
Либо один заголовок, либо общий размер заголовка превышает лимит — чаще всего вызывается переполненными cookies. Очистите cookies или уменьшите то, что ваше приложение в них хранит.
451Недоступно по правовым причинам
Доступ запрещён из-за правовых требований.
Недоступно по правовым причинам
Доступ запрещён из-за правовых требований.
Ресурс заблокирован по правовым причинам — цензура, судебные приказы или региональные правила. Номер является намёком на роман «451 градус по Фаренгейту».
500Внутренняя ошибка сервера
Сервер встретил неожиданное состояние.
Внутренняя ошибка сервера
Сервер встретил неожиданное состояние.
Универсальный обработчик для ошибок на стороне сервера. Проверьте логи сервера для фактической причины: необработанное исключение, ошибка БД и т.д.
501Не реализовано
Сервер не поддерживает запрошенную функцию.
Не реализовано
Сервер не поддерживает запрошенную функцию.
Например, сервер не распознает метод HTTP. Редко на практике — чаще вы увидите 405.
502Плохой шлюз
Сервер в роли шлюза получил плохой ответ от upstream сервера.
Плохой шлюз
Сервер в роли шлюза получил плохой ответ от upstream сервера.
Обычно в архитектуре микросервисов. Ваш load balancer или reverse proxy получил неправильный ответ от backend сервиса.
503Сервис недоступен
Сервер временно не может обработать запрос.
Сервис недоступен
Сервер временно не может обработать запрос.
Либо на обслуживании, либо перегружен. Ответ должен включать заголовок Retry-After. Часто возвращается во время развёртывания.
504Тайм-аут шлюза
Сервер шлюза не дождался ответа от вышестоящего сервера.
Тайм-аут шлюза
Сервер шлюза не дождался ответа от вышестоящего сервера.
Backend сервис не ответил достаточно быстро. Проверьте здоровье upstream сервиса и конфигурацию timeout.
505Версия HTTP не поддерживается
Сервер не поддерживает версию HTTP, использованную в запросе.
Версия HTTP не поддерживается
Сервер не поддерживает версию HTTP, использованную в запросе.
Основная версия HTTP запроса не поддерживается сервером. Почти никогда не встречается с современными клиентами.
506Также согласует вариант
Сервер имеет ошибку конфигурации согласования содержимого.
Также согласует вариант
Сервер имеет ошибку конфигурации согласования содержимого.
Согласование содержимого привело к циклу: выбранный вариант сам настроен на согласование. Указывает на ошибку конфигурации сервера.
507Недостаточно хранилища
На сервере закончилось место на диске.
Недостаточно хранилища
На сервере закончилось место на диске.
WebDAV-специфичный по происхождению, но иногда используется общими серверами. Означает, что сервер не может сохранить запрос из-за ограничений хранилища.
508Обнаружен цикл
Сервер обнаружил бесконечный цикл при обработке запроса.
Обнаружен цикл
Сервер обнаружил бесконечный цикл при обработке запроса.
WebDAV: обработка запроса Depth: infinity вошла в цикл (например, циклические привязки). Операция была прервана.
510Не расширено
Требуются дополнительные расширения к запросу.
Не расширено
Требуются дополнительные расширения к запросу.
Из устаревшей HTTP Extension Framework: сервер нуждается в дополнительной информации перед выполнением запроса. Практически не используется в современной сети.
511Требуется аутентификация в сети
Клиент должен пройти аутентификацию для получения доступа в сеть.
Требуется аутентификация в сети
Клиент должен пройти аутентификацию для получения доступа в сеть.
Используется captive-порталами (Wi-Fi в отелях и аэропортах), чтобы указать, что пользователь должен войти в сеть перед доступом на внешние сайты.
Частые применения
- Справочник по проектированию APIПри проектировании REST API выберите правильный код состояния для каждого ответа.
- Быстрый поиск кодов ошибокКогда ваше приложение возвращает запутанную ошибку HTTP, узнайте, что она на самом деле означает.
- Узнайте коды состояния HTTPВсеобъемлющий справочник для студентов и разработчиков, изучающих HTTP и REST.
- Быстрый справочник во время инцидентовВо время производственных инцидентов быстро узнайте, что означает каждый код состояния.
- Справка по документации APIПри написании документации API ссылайтесь на авторитетные описания возвращаемых кодов состояния.
Как это работает
Этот инструмент — клиентская справка, построенная вокруг жёстко закодированной справочной таблицы из 63 кодов состояния HTTP, охватывающих все пять классов (1xx–5xx), каждый снабжён аннотацией с номером определяющего RFC. Нет обращения к серверу, внешнего API и сетевого запроса — вся фильтрация и отображение происходят в браузере с использованием встроенных методов массива и строки JavaScript.
- 1Загружена справочная таблицаПолный набор из 63 зарегистрированных IANA кодов состояния встроен прямо в этот инструмент как массив JavaScript, каждая запись несёт числовой код, каноничное английское имя, класс категории и конкретный RFC, который его определяет (например, RFC 9110 для большинства кодов HTTP/1.1, RFC 6585 для 429 Too Many Requests, RFC 2324 для 418 I'm a Teapot).
- 2Фильтр работает в памятиПо мере ввода или выбора фильтра категории Array.filter JavaScript работает по списку в памяти, сопоставляя ваш запрос с номером кода состояния, каноничным именем и обеими строками короткого и длинного описания, используя String.includes — без задержки, без обращения к серверу.
- 3Детали раскрываются со ссылкой RFCКаждый результат рендерится как HTML-элемент details/summary. Раскрытие записи показывает объяснение в развёрнутой форме и прямую ссылку на авторитетный RFC на rfc-editor.org, так что вы можете прочитать точный текст спецификации для любого кода.
- 4Глубокие ссылки и копирование в буфер обменаОткрытие записи обновляет хэш URL на номер кода (например, #404), делая страницу доступной для обмена и удобной для закладок. Кнопка копирования записывает каноничную строку (например, '404 Not Found') в буфер обмена через API navigator.clipboard браузера.
Похожие инструменты
Генератор цитирования
Создавайте цитаты и ссылки в тексте по APA 7, MLA 9, Chicago и Harvard для сайтов, книг, журналов и YouTube — и составляйте список литературы для копирования или экспорта. Бесплатно и конфиденциально.
Интервальный таймер
Таймер работы и отдыха для тренировок HIIT и Tabata с разминкой, раундами, подходами, большим обратным отсчётом, фазами с цветовой кодировкой, звуковыми сигналами и необязательными голосовыми подсказками.
Разделение видео
Разделите длинное видео на части: фрагменты по 60 секунд для статусов и историй WhatsApp, заданное число равных частей или части не больше заданного размера, например 25 MB для электронной почты. Сохраняйте каждую часть отдельно или всё сразу в ZIP. Работает в браузере; видео не загружается на сервер.