Справочник HTTP-статусов
Полный справочник всех стандартных HTTP-кодов ответов: от 1xx до 5xx. Разберись, что означает каждый статус, и исправь ошибки сайта.
Сервер получил начало запроса и просит продолжить отправку тела.
Внутренний протокол, пользователь не видит. Используется в многопартийных файлозагрузках и больших POST-запросах.
Сервер переходит с HTTP на WebSocket или другой протокол.
Чат, реалтайм-уведомления, онлайн-игры — всё, что нужно постоянное соединение.
Сервер обрабатывает запрос, но ещё не готов ответить. Говорит браузеру: "жди, я работаю".
WebDAV-операции на больших файлах или сложных выборках.
Сервер подсказывает браузеру предзагрузить ресурсы (CSS, JS, шрифты) до основного ответа.
Ускорение загрузки страниц через Link-заголовки (preconnect, preload).
Всё прошло отлично. Сервер отправил содержимое страницы / ответ на API.
Самый частый статус. Видишь его — всё работает.
Ресурс успешно создан. Обычно сопровождается Location-заголовком с адресом нового ресурса.
POST-запрос создал новый пост в блоге, новый заказ в интернет-магазине или новый пользователь в системе.
Запрос принят, но обработка идёт в фоне. Результат появится позже.
Отправка письма (может идти минуту), экспорт большого файла, обработка видео.
Успешно, но информация не от основного источника, а от прокси/кэша, который мог её изменить.
Редко встречается. Может быть в очень специфичных прокси-сценариях.
Всё прошло успешно, но телом ответа ничего нет. Браузер не обновляется.
DELETE-запрос удалил пост. Или PATCH-запрос обновил только флаг (лайк/избранное).
Успешно, и браузер должен очистить форму/состояние страницы.
После отправки формы: очистить все поля (редко, обычно используется JS).
Сервер отправляет только часть файла (обычно по запросу Range-заголовка).
Скачивание большого файла, при перезагрузке скачка продолжается с того же места. Видео-плеер смотрит 1 минуту, потом прыгает на 20-ю.
Множество статусов для нескольких ресурсов в одном запросе (обычно WebDAV).
WebDAV (облачные файлы, календари): удалить 10 файлов одной командой, для каждого свой статус.
Ресурс уже был упомянут в многостатусном ответе, повторяем во избежание путаницы.
Тоже WebDAV. В маленьких проектах встречается редко.
Ответ содержит дельта-кодирование (только изменённые части ресурса).
Экономия трафика при синхронизации больших файлов. Очень редко встречается.
Несколько вариантов ресурса (разные форматы, языки, версии). Браузер выбирает сам или показывает список.
Странница доступна на 5 языках, или видео доступно в MP4 / WebM / HLS. Редко.
Постоянный редирект. Старый URL переехал на новый навсегда. Браузер запомнит и в следующий раз сразу пойдёт на новый адрес.
- Переноска старой страницы на новый URL
- Переиндексация старых адресов
Лучший выбор при переносе страницы. Для SEO: бот переносит весь авторитет на новый URL.
Временный редирект. Старый URL хранится, браузер не кэширует редирект. Может быть, страница вернётся.
- Тестирование новой версии
- Временное отключение страницы
Используй если редирект — это временная мера. Для SEO: рискованно, бот может не переиндексировать.
Перейди на другой ресурс, но всегда GET, даже если был POST (смотри результат формы).
POST на /order → сервер создаёт заказ → 303 → GET на /order/123 (результат). Паттерн PRG (Post-Redirect-Get).
Ресурс не изменился с момента последней загрузки (кэш браузера ещё свежий). Тело ответа пусто.
Экономия трафика: браузер спрашивает "эта статья ещё от 15 марта?", сервер отвечает "да", браузер берёт из кэша.
Временный редирект, но метод HTTP сохраняется. POST остаётся POST (в отличие от 302).
Временный редирект API-эндпоинтов, когда критично сохранить метод запроса (PUT, DELETE, PATCH).
Постоянный редирект, но метод HTTP сохраняется. POST остаётся POST.
Постоянный редирект API-эндпоинтов. API-клиент будет помнить редирект и сразу лететь на новый адрес.
Запрос неправильный. Браузер или API-клиент отправили что-то в неправильном формате.
- Неправильный JSON в теле POST
- Отсутствует обязательный параметр
- Ошибка синтаксиса в URL-параметрах
Проверь запрос. Обычно в ответе сервер объясняет, что не так.
Не авторизован. Ты не вошёл или твой токен истёк.
- Куки сессии удалены браузером
- JWT-токен истёк
- Не передан заголовок Authorization
Нужно войти в аккаунт. Браузер обычно редиректит на /login.
Доступ запрещён. Ты вошёл, но нет прав на эту страницу.
- Тариф не позволяет
- Роль пользователя ниже требуемой
- IP заблокирован
Ты вошёл как обычный юзер, а пытаешься открыть админ-панель.
Страница не найдена. Сервер не знает такого адреса.
- Опечатка в URL
- Страница удалена (но не правильно редиректнута)
- Неправильная ссылка в меню
Самая частая ошибка. Браузер показывает "Ошибка 404" или собственную страницу сайта.
Метод HTTP не поддерживается. Ты отправил DELETE, а сервер ждёт GET.
- Отправил POST на эндпоинт, который требует GET
- Отправил PUT вместо PATCH
В API-разработке. Проверь, какой метод требует сервер в документации.
Сервер не может отправить ответ в запрошенном формате.
Ты просишь JSON, а сервер может только XML. Редко встречается.
Нужно авторизоваться на прокси. Часто в корпоративных сетях.
В корпоративной сети требуется пароль прокси. Вне корпсети не встречается.
Клиент отправляет данные слишком долго. Сервер ждал, ждал и сдался.
- Очень медленное соединение
- Отправка очень больших файлов без прерываний
При загрузке видео-файла могу получить 408, если интернет очень медленный.
Конфликт. Запрос конфликтует с текущим состоянием ресурса.
- Пытаешься отредактировать файл, который кто-то уже удалил
- Два юзера одновременно обновляют один заказ
В системах совместного редактирования (Google Docs, Figma). Обновить страницу и попробовать снова.
Ресурс удалён навсегда и больше не вернётся. Сложнее, чем 404.
Статья удалена из блога. Для SEO: бот удалит из индекса сразу, не будет ждать, как при 404.
Отсутствует Content-Length. Сервер не знает, сколько байт в теле запроса.
Очень редко. Обычно браузер сам добавляет Content-Length.
Предусловие не выполнено. Ты отправил If-Match или If-Unmodified-Since, но условие не сошлось.
Синхронизация файлов: "обновить, если содержимое не изменилось" → оно изменилось → 412.
Файл слишком большой. Сервер не приймет такой объём данных.
- Загружаешь видео 5GB, а лимит 100MB
Выбери меньший файл или раздели большой файл на части.
URL слишком длинный. Сервер отказывает.
Редко. Например, 10000 символов в строке поиска — слишком много.
Тип контента не поддерживается. Отправил JPEG, а сервер ждёт PNG.
Загрузить файл правильного формата.
Запрошенный диапазон невозможен. Например, просишь байты 500–1000, а файл только 200 байт.
При возобновлении скачивания файл может быть меньше, чем ожидал клиент.
Сервер не может выполнить то, что обещал в заголовке Expect.
Редко встречается. Обычно браузер не отправляет Expect-заголовок.
Я — чайник. Пасхалка из RFC 2324 (1 апреля 1998). Сервер шутит, что он не может варить кофе.
Пасхалка. Некоторые API реально используют 418 в шутку.
Запрос отправлен на неправильный сервер (в HTTP/2 с множественными доменами на одном соединении).
HTTP/2 на шаред-хостинге: запрос идёт на domain1, но соединение открыто для domain2.
Синтаксис правильный, но семантика неверна. Отправил валидный JSON, но данные имеют ошибку.
- Email уже существует
- Возраст не может быть отрицательным
API ответит ошибкой валидации с объяснением, какое поле неправильное.
Ресурс заблокирован. Файл редактирует другой юзер, не трогай.
Совместное редактирование в WebDAV или Google Docs.
Запрос не прошёл, потому что зависел от другого, неудачного запроса.
WebDAV: удаляем папку и все файлы внутри → файл не удалился → папка не удалится (424).
Слишком рано. TLS 1.3 Early Data — ты отправил запрос на установление соединения.
Редко встречается. HTTPS/TLS оптимизация.
Нужно обновить протокол. HTTP → HTTPS или HTTP 1.1 → HTTP/2.
Сайт требует HTTPS, а браузер используется старый и не поддерживает TLS 1.2+.
Нужно отправить предусловие. Например, If-Match для редактирования.
REST API требует, чтобы при UPDATE ты отправил If-Match (версия ресурса) для избежания конфликтов.
Слишком много запросов. Ты спамишь. Сервер тебя ограничил (rate limiting).
- Отправляешь 1000 запросов в секунду
- Постоянно пытаешься угадать пароль (брутфорс)
- Bot-активность
Подожди 1–60 минут и попробуй снова. Сервер может отправить Retry-After-заголовок с рекомендуемым временем ожидания.
Заголовки слишком большие. Слишком много cookies или очень длинные URL-параметры.
Очистить куки браузера. Или отправить запрос без лишних параметров.
Недоступно по правовым причинам. Контент забанен в твоей стране.
В некоторых странах провайдеры блокируют контент по требованию закона. Обычно видно только в специфичных странах.
Внутренняя ошибка сервера. Что-то сломалось на сервере, но сервер не может точно сказать, что.
- Необработанное исключение в коде
- Ошибка в БД
- Переполнение памяти
Перезагрузить страницу. Если ошибка повторяется — связаться с поддержкой. Сервер уже пишет ошибку в логи.
Не реализовано. Сервер не поддерживает функциональность, которую ты просишь.
Например, отправил WebDAV-команду на обычный HTTP-сервер.
Плохой шлюз. Прокси (Nginx, Cloudflare) не может достучаться до основного сервера.
- Основной сервер упал
- Основной сервер не отвечает на запросы
- Прокси и сервер на разных IP/портах, но связь потеряна
Сайт "упал" для пользователя, хотя на сервере может быть всё окей (проблема в сети).
Сервис недоступен. Сервер перегружен, на обслуживании или упал.
- Слишком много одновременных запросов (DDoS)
- Плановое обслуживание
- Сервер упал
Подожди 5–30 минут и перезагрузи страницу. Обычно сервис восстановится.
Основной сервер не ответил в отведённое время (обычно 30 сек). Прокси ждал, ждал и сдался.
- Основной сервер медленный или зависает
- Запрос делает очень долгую операцию (аналитику по 10 млн записям)
- Сетевая задержка
Перезагрузить страницу. Если повторяется — свяжись с поддержкой, на сервере что-то не то.
Версия HTTP не поддерживается. Отправил запрос по HTTP/3, а сервер только HTTP/1.1.
Очень редко. Обычно браузер согласовывает версию автоматически.
Ошибка в конфигурации прокси. Прокси запутался в множественных вариантах контента.
Администратору сервера нужно исправить конфиг. Пользователь ничего не может сделать.
Недостаточно места. На сервере кончилось место в хранилище.
Администратору нужно добавить дискового пространства. До тех пор новые данные не загружаются.
Обнаружена петля. WebDAV-команда зациклилась (папка A ссылается на папку B, B — на A).
Администратору нужно исправить структуру файлов.
Не расширено. Сервер требует HTTP-расширение (обычно WebDAV), но ты его не отправил.
Редко. Обычно в специфичных WebDAV-сценариях.
Требуется сетевая авторизация. Часто в публичных WiFi с портальной авторизацией.
В кафе, аэропорту: прежде чем попасть в интернет, нужно авторизоваться на портале WiFi.