Ответ вслух Middle Заголовки и cookies обновлено

Что проверяешь в заголовках ответа

Вопрос

Какие заголовки ответа ты проверяешь при тестировании API и зачем?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Заголовки я делю на четыре группы. Формат: Content-Type совпадает с тем, что реально в теле, и кодировка указана.

Что должно прозвучать в ответе

  • Content-Type соответствует телу (JSON, charset)

  • Кеширование: Cache-Control и ETag, no-store на персональных данных

  • Безопасность: флаги Set-Cookie, CORS, Strict-Transport-Security

  • Location у 201 и редиректов, Allow у 405, Retry-After у 429

  • Нет утечек: версии сервера и фреймворка в Server и X-Powered-By, request id для поиска в логах

Что могут спросить следом

  • Что опасного в Access-Control-Allow-Origin, отражающем любой Origin?
  • Почему персональные данные с Cache-Control: public это баг?
  • Как проверить заголовки, если тест пишешь в Postman?

Разбор

Заголовки я делю на четыре группы. Формат: Content-Type совпадает с тем, что реально в теле, и кодировка указана. Кеш: у справочников есть Cache-Control и ETag, и повторный запрос с If-None-Match даёт 304, а у ответов с личными данными стоит no-store или хотя бы private, иначе общий прокси может отдать профиль одного пользователя другому. Безопасность: у cookie сессии HttpOnly, Secure и SameSite, CORS разрешает только свои домены и не отражает любой Origin вместе с Allow-Credentials, есть HSTS. Служебные: Location у 201 и редиректов, Allow у 405, Retry-After у 429. И смотрю на утечки: Server и X-Powered-By с точной версией подсказывают атакующему, какие уязвимости пробовать. В Postman всё это проверяется через pm.response.headers в тестах коллекции.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.