Какие заголовки (Headers) указываются в HTTP-запросах и зачем они нужны?

«Какие заголовки (Headers) указываются в HTTP-запросах и зачем они нужны?» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Заголовки HTTP — это пары «ключ-значение», которые передают метаданные о запросе или ответе. Они управляют кешированием, аутентификацией, форматом данных и поведением клиента/сервера.

Ключевые заголовки для тестирования API:

Категория Заголовок Пример значения Назначение
Тип содержимого Content-Type application/json Указывает формат тела запроса (MIME-тип). Сервер использует его для парсинга.
Принятие данных Accept application/json Сообщает серверу, в каком формате клиент ожидает ответ.
Аутентификация Authorization Bearer eyJhbGciOi... Передает учетные данные или токен для доступа к защищенным ресурсам.
Клиентская информация User-Agent Mozilla/5.0 ... Идентифицирует клиентское приложение, браузер, ОС. Может влиять на ответ сервера.
Управление кешем Cache-Control no-cache Директивы для кеширования запросов и ответов.

Пример полного HTTP POST-запроса:

POST /api/v1/orders HTTP/1.1
Host: api.shop.com
Content-Type: application/json
Authorization: Bearer xyz789abc
Accept: application/json
User-Agent: MyTestRunner/1.0

{"productId": 456, "quantity": 2}

Почему это важно в тестировании?

  • Content-Type/Accept: Несоответствие — частая причина ошибок 415 Unsupported Media Type или 406 Not Acceptable.
  • Authorization: Позволяет тестировать endpoints с разными уровнями доступа (авторизованный/неавторизованный пользователь).
  • User-Agent: Некоторые API могут возвращать разный контент для мобильных и десктопных клиентов.

Инструменты для проверки: Postman, Insomnia, DevTools Network tab, curl -v.