Для чего нужны заголовки (headers) в HTTP-запросе?

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

Ответ

HTTP-заголовки передают метаданные между клиентом и сервером, управляя обработкой запроса и ответа.

Основные функции:

  • Контекст запроса: Определяют тип контента (Accept, Content-Type), язык (Accept-Language) и кодировку.
  • Аутентификация и авторизация: Передают учетные данные (Authorization: Bearer <token>, Cookie).
  • Кеширование: Управляют хранением ответов (Cache-Control, ETag).
  • Управление соединением: Контролируют поведение TCP-соединения (Connection: keep-alive).
  • Безопасность: Реализуют политики безопасности (CORS, Content-Security-Policy).

Пример HTTP-запроса с заголовками:

GET /api/data HTTP/1.1
Host: api.example.com
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
User-Agent: MyClient/1.0
Cache-Control: no-cache

Без заголовков сервер не сможет правильно интерпретировать намерения клиента и формат ожидаемого ответа.