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

«Какие ключевые HTTP-заголовки (headers) используются в запросах и ответах?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP-заголовки управляют передачей данных, кешированием, аутентификацией и поведением клиента/сервера. Вот основные из них, часто используемые в DevOps-практике (мониторинг, API, прокси):

Общие (General Headers):

  • Cache-Control: Директивы для кеширования (no-cache, max-age=3600). Критично для CDN и балансировщиков.
  • Connection: Управление соединением (keep-alive, close).

Заголовки запроса (Request Headers):

  • Host: Обязательный заголовок, указывает домен и порт сервера. Важен для виртуальных хостов.
  • User-Agent: Строка, идентифицирующая клиента (браузер, curl, скрипт). Используется для логирования и аналитики.
  • Accept: Указывает, какие типы контента (application/json, text/html) клиент может принять.
  • Authorization: Учетные данные для аутентификации (Bearer <token>, Basic <credentials>).
  • Content-Type: Тип тела запроса (application/json, application/x-www-form-urlencoded).
  • Content-Length: Размер тела запроса в байтах.
  • X-Forwarded-For (нестандартный, но де-факто стандарт): IP-адрес исходного клиента, когда запрос проходит через прокси или балансировщик (например, Nginx, HAProxy).

Заголовки ответа (Response Headers):

  • Content-Type: Тип контента в ответе.
  • Content-Length: Размер тела ответа.
  • Set-Cookie: Установка кук на стороне клиента.
  • Location: Используется для перенаправлений (код 3xx).
  • Server: Информация о серверном ПО (часто маскируется в целях безопасности).
# Пример запроса с ключевыми заголовками через curl (типичный для DevOps-скриптов)
curl -X POST 
  -H "Content-Type: application/json" 
  -H "Authorization: Bearer $(gcloud auth print-access-token)" 
  -H "X-Custom-Metric: deployment_success" 
  --data '{"status":"ok"}' 
  https://monitoring-api.example.com/v1/events