Шпаргалка по кодам ответов HTTP

Код ответа — первое, на что смотрят во вкладке Network. Он сразу говорит, чья ошибка: если 4xx — виноват запрос, если 5xx — сервер. Ниже коды, которые встречаются в работе чаще всего, и типовые дефекты, которые за ними стоят.

Пять групп

ГруппаСмыслКто «виноват»
1xxЗапрос принят, продолжаемслужебные, в интерфейсе почти не видны
2xxУспех
3xxПеренаправление
4xxОшибка в запросеклиент
5xxОшибка на сервересервер

2xx — успех

КодКогдаНа что смотреть тестировщику
200 OKЗапрос выполнен, в теле результатКлассика: 200 с телом {"error": "..."}. Успешный код при неуспешной операции — дефект
201 CreatedРесурс созданДолжен быть заголовок Location со ссылкой на созданное
202 AcceptedПринято в обработку, результата ещё нетПроверьте, что интерфейс не рисует «готово» раньше времени
204 No ContentВыполнено, тела нет (частый ответ на DELETE)Тела быть не должно — если оно есть, это нарушение контракта

3xx — перенаправление

КодКогдаНа что смотреть
301 Moved PermanentlyАдрес изменился навсегдаКэшируется браузером — ошибочный 301 живёт долго. Важно для SEO
302 FoundВременно по другому адресуПроверьте цепочку: 302 → 302 → 302 замедляет загрузку
304 Not ModifiedНе изменилось, берите из кэшаОбновили файл, а пользователь видит старый — смотрите заголовки кэширования
307 / 308То же, что 302 / 301, но метод и тело сохраняютсяПри 301 POST может превратиться в GET и потерять данные

4xx — ошибка в запросе

КодКогдаТиповой дефект
400 Bad RequestЗапрос не разобрать: битый JSON, нет обязательного поляВ ответе нет сведений, какое поле неверно — пользователю нечего показать
401 UnauthorizedНе представились: токена нет, он истёк или неверенИнтерфейс показывает «ошибка сервера» вместо предложения войти заново
403 ForbiddenКто вы — понятно, но доступа нетСамое интересное для тестирования ролей: обычный пользователь дёргает админский метод
404 Not FoundРесурса нет404 вместо 403 — иногда так специально прячут чужие данные, уточняйте
405 Method Not AllowedАдрес есть, метод не тот (DELETE вместо POST)Должен быть заголовок Allow с перечнем методов
408 Request TimeoutКлиент слишком долго слал запросВсплывает при загрузке больших файлов на слабой сети
409 ConflictКонфликт состояния: e-mail занят, версия устарелаПроверяйте одновременное редактирование из двух вкладок
413 Payload Too LargeТело больше лимитаЛимит в интерфейсе и лимит сервера расходятся — форма молча падает
415 Unsupported Media TypeНе тот Content-TypeЗабыли application/json — типичная ошибка в Postman
422 Unprocessable EntityФормат верный, значения — нет (возраст −5)Граница с 400 размыта; главное — единообразие внутри проекта
429 Too Many RequestsСлишком частоПроверьте заголовок Retry-After и что интерфейс не долбит сервер в цикле

5xx — ошибка на сервере

КодКогдаЧто делать тестировщику
500 Internal Server ErrorНеобработанное исключениеВсегда дефект. Приложите тело запроса, время и traceId — по ним найдут запись в логах
502 Bad GatewayПрокси получил мусор от приложенияЧасто значит, что сервис упал или не поднялся
503 Service UnavailableСервис недоступен: перегрузка или обслуживаниеПроверьте, что интерфейс показывает человеческое сообщение, а не белый экран
504 Gateway TimeoutВнутренний сервис не ответил вовремяИщите тяжёлый запрос: выгрузку, отчёт, поиск без ограничения
🎯 Что чаще всего находят по кодам
  1. 200 с ошибкой в теле. Мониторинг такое не ловит, а пользователь видит сбой.
  2. 500 вместо 400. Некорректный ввод должен давать 400, а не падение сервера. Отправьте в поле числа строку — и посмотрите.
  3. Отсутствие 403 у чужих данных. Подставьте чужой id в адрес запроса: если данные вернулись — это уязвимость.
  4. 401 без обновления токена. Подождите, пока токен истечёт, и понажимайте кнопки.

Как проверить руками

Код виден в DevTools → Network в столбце Status. Тот же запрос можно повторить без интерфейса:

curl -i -X POST https://api.example.com/orders \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <токен>" \
  -d '{"productId": 10, "qty": 1}'

Флаг -i печатает заголовки ответа вместе с кодом. Убрать Content-Type и посмотреть, придёт ли 415, — проверка на одну команду.

Потрогать коды вживую можно в тренажёре «клиент API»: он поднимает учебный сервер прямо в браузере, и там есть задания и на 400, и на 403, и на 404. Теория с разбором — в открытом уроке коды ответов HTTP.

Это выжимка. Полный разбор — в курсе

В «Ручном тестировщике» 47 уроков и 36 тренажёров с проверкой результата. Часть уроков и четыре тренажёра открыты бесплатно.

Начать бесплатно Открытые уроки