Что такое HTTP-хедеры и что в них передается
Что проверяют
Умеете ли вы смотреть на обмен целиком, а не только на тело ответа. Для тестировщика заголовки это половина воспроизводимости дефекта: язык, авторизация, тип содержимого, кэш и куки меняют ответ при одном и том же адресе.
Как отвечать
Заголовки это пары из имени и значения в запросе и ответе, метаданные вокруг тела. Со стороны клиента: Host, User-Agent, Accept и Accept-Language (что клиент готов принять), Content-Type (что он шлёт), Authorization, Cookie, условные If-None-Match и If-Modified-Since, сквозной идентификатор трассировки. Со стороны сервера: Content-Type, Content-Length или Transfer-Encoding, Location при перенаправлении и создании ресурса, Set-Cookie, Cache-Control и ETag, заголовки совместного доступа между источниками, заголовки безопасности.
Дальше важно показать, что вы проверяете их осознанно: совпадает ли объявленный тип с реальным телом, стоят ли у сессионной куки флаги HttpOnly, Secure и SameSite, не уходит ли приватный ответ с разрешающим кэширование заголовком, не отдаёт ли сервер версию фреймворка и стек в служебных полях.
Где спотыкаются
Сравнивают имена заголовков с учётом регистра. Имена регистронезависимы, а в HTTP/2 они и вовсе приводятся к нижнему, поэтому автотест, ждущий Content-Type, падает на content-type без всякой ошибки на сервере.
Трактуют no-cache как запрет кэширования. Это требование перепроверить свежесть перед использованием, а полный запрет хранения задаёт no-store; на этой паре рождаются баги с чужими данными в общем кэше.
Проверяют только через интерфейс. Браузер сам проставляет половину заголовков, и дыра становится видна лишь тогда, когда тот же запрос уходит напрямую: без языка, без источника перехода и с подменённым типом содержимого.