Какие данные входят в заголовки HTTP при тестировании API?
Что проверяют
Понимаете ли вы, что заголовки это часть контракта API, которую тоже нужно тестировать, а не только тело ответа. Следом обычно просят назвать негативные проверки: что вернёт сервер без токена или с неправильным Content-Type.
Как отвечать
Разделите на заголовки запроса и ответа и к каждому добавьте, что вы с ним проверяете.
В запросе:
Authorization:Bearer <токен>илиBasic. Без него ждём401, с токеном без прав403;Content-Type: формат тела,application/jsonилиmultipart/form-dataсboundary. На неподдерживаемый тип правильный ответ415;Accept: какой формат клиент готов принять, при несовпадении возможен406;Accept-Language,Accept-Encoding: локализация ответа и сжатие (gzip,br);- служебные:
X-Request-IDдля поиска запроса в логах,Idempotency-Keyдля повторных платёжных запросов,If-None-Matchдля условных запросов.
В ответе:
Content-Typeи кодировка;Locationпосле201 Createdили редиректа;Cache-Control,ETag: повторный запрос сIf-None-Matchдолжен вернуть304;Set-Cookie: флагиHttpOnly,Secure,SameSite;WWW-Authenticateрядом с401,Retry-Afterрядом с429и503;- CORS и безопасность:
Access-Control-Allow-Origin,Strict-Transport-Security,X-Content-Type-Options: nosniff.
Инструменты: curl -i или -v, вкладка Headers в Postman, в REST Assured given().header(...) и then().header(...).
Где спотыкаются
Путают 401 и 403. Первый значит «не знаю, кто вы», второй «знаю, но нельзя».
Сравнивают Content-Type на точное равенство и ловят ложное падение из-за ; charset=utf-8. Проверять стоит вхождение, а имена заголовков регистронезависимы: в HTTP/2 они вообще передаются строчными.
Ищут CORS-ошибки в Postman. Preflight-запрос OPTIONS отправляет только браузер, поэтому CORS проверяют отдельно, заголовком Origin в запросе.