Какие данные передаются через HTTP-заголовки?

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

Ответ

HTTP-заголовки служат для передачи метаданных, управляющих обработкой запроса или ответа. Они не предназначены для основной полезной нагрузки (payload).

Основные типы передаваемых данных:

  • Метаданные запроса/ответа:

    • Content-Type: application/json — тип передаваемых данных.
    • Content-Length — размер тела сообщения.
    • User-Agent — информация о клиенте.
    • Host — целевой хост.
  • Управление кэшированием:

    • Cache-Control: public, max-age=86400 — инструкции для кэшей.
    • ETag, Last-Modified — для валидации кэша.
  • Управление соединением и производительностью:

    • Connection: keep-alive
    • Accept-Encoding: gzip — поддержка сжатия.
  • Безопасность и аутентификация:

    • Authorization: <type> <credentials> — учетные данные.
    • Set-Cookie / Cookie — управление сессией.
    • Заголовки безопасности (CSP, HSTS).
  • CORS (Cross-Origin Resource Sharing):

    • Origin — источник запроса.
    • Access-Control-Allow-Origin — разрешенные источники для ответа.
  • Служебная информация для приложения (кастомные заголовки):

    • X-Request-ID: 550e8400-e29b-41d4-a716-446655440000 — для сквозной трассировки.
    • X-API-Version: 2 — версия API.

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

GET /api/v1/products?category=books HTTP/1.1
Host: api.store.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLC...
Accept: application/json
Accept-Encoding: gzip, deflate
X-Correlation-ID: req-2024-abc123
User-Agent: MyClient/1.0.0

Заголовки — это ключевой механизм управления поведением HTTP-коммуникации.