HTTP-заголовки, коды ответов (200, 404, 500 и т. д.)
HTTP-заголовки и коды ответов
Введение
Когда браузер или Postman отправляет запрос на сервер — вместе с запросом летит куча служебной информации. Эта информация передаётся в заголовках (headers) . Сервер отвечает тоже с заголовками плюс кодом состояния (status code) , который говорит: «всё ок», «ресурс не найден», «у тебя нет прав» и т. д.
Как тестировщик, ты будешь смотреть и на заголовки, и на код ответа в каждом тесте API.
HTTP-заголовки
Заголовок — это пара ключ: значение , которая передаётся вместе с HTTP-запросом или ответом.
Заголовки запроса (Request Headers)
Заголовок Пример значения Что означает Content-Typeapplication/jsonФормат тела запроса AuthorizationBearer eyJhbGci...Токен авторизации Acceptapplication/jsonКакой формат ответа ожидает клиент User-AgentMozilla/5.0 ...Какой клиент делает запрос
Заголовки ответа (Response Headers)
Заголовок Пример значения Что означает Content-Typeapplication/json; charset=utf-8Формат тела ответа Cache-Controlno-cacheКак кешировать ответ Set-CookiesessionId=abc123; HttpOnlyУстанавливает cookie в браузере Location/users/42Куда перенаправить (при редиректах)
Пример запроса с заголовками:
POST /api/login HTTP/1.1
Content-Type: application/json
Accept: application/json
{"email": "user@test.com", "password": "secret"}
Коды состояния HTTP
Код состояния — трёхзначное число в ответе сервера. Первая цифра указывает группу.
2xx — Успех
Код Название Когда используется 200 OK Стандартный успешный ответ 201 Created Ресурс успешно создан (POST) 204 No Content Успешно, но тела ответа нет (DELETE)
3xx — Перенаправление
Код Название Когда используется 301 Moved Permanently URL изменился навсегда 302 Found Временное перенаправление
4xx — Ошибка клиента
Код Название Когда используется 400 Bad Request Некорректный запрос (плохой JSON, невалидные данные) 401 Unauthorized Не авторизован (нет или неверный токен) 403 Forbidden Авторизован, но нет прав 404 Not Found Ресурс не найден 405 Method Not Allowed Метод не поддерживается этим endpoint'ом 409 Conflict Конфликт (например, email уже занят) 422 Unprocessable Entity Данные правильного формата, но семантически неверны 429 Too Many Requests Превышен лимит запросов (rate limiting)
5xx — Ошибка сервера
Код Название Когда используется 500 Internal Server Error Необработанная ошибка на сервере 502 Bad Gateway Прокси получил неверный ответ от upstream 503 Service Unavailable Сервер перегружен или на обслуживании 504 Gateway Timeout Upstream не ответил вовремя
Частые ошибки тестировщиков
Проверять только статус-код, игнорируя тело ответа. Сервер может вернуть 200, но в теле написать {"error": "Not found"} — это тоже баг.
Игнорировать заголовки ответа. Например, забытый Set-Cookie может означать, что сессия не создаётся.
Не проверять 5xx. Если при тестировании появился 500 — это всегда баг, даже если UI "нормально" обработал ситуацию.
Путать 401 и 403. 401 — «я не знаю кто ты», 403 — «я знаю кто ты, но ты не можешь это делать».
Что мы запомним
Заголовки передают служебную информацию вместе с запросом и ответом.
Content-Type и Authorization — самые важные заголовки запроса.
2xx — успех, 3xx — редиректы, 4xx — ошибка клиента, 5xx — ошибка сервера.
Всегда проверяй и статус-код, и тело ответа — они оба важны.
401 ≠ 403: первый про отсутствие аутентификации, второй — про отсутствие прав.
Попробуйте интерактивную версию
Практические задачи, квизы и AI-наставник — бесплатный старт без карты
Перейти к практике
Предыдущий урок
Безопасность и мониторинг
Следующий урок
Методы HTTP: GET, POST, PUT, DELETE, PATCH