Заголовки HTTP: обзор ключевых

Заголовки HTTP: обзор ключевых

Заголовки — это метаданные HTTP-сообщения. Они передают информацию о клиенте, серве, ресурсе и правилах его обработки. Заголовков в HTTP десятки, но в повседневной работе встречаются несколько десятков ключевых. Разберём их по группам.

Заголовки запроса (request headers)

Клиент сообщает серверу, кто он, что хочет и в каком формате:

  • Host — домен, к которому обращается клиент. Единственный обязательный заголовок в HTTP/1.1: Host: api.example.com.
  • User-Agent — идентификатор клиента (браузер, ОС). Для аналитики и, реже, для адаптации ответа: User-Agent: Mozilla/5.0 ....
  • Accept — какие форматы клиент готов принять. Сервер использует для выбора формата ответа: Accept: text/html, application/json.
  • Accept-Language — предпочитаемые языки с приоритетами: Accept-Language: ru, en;q=0.9.
  • Accept-Encoding — какие алгоритмы сжатия поддерживает клиент: Accept-Encoding: gzip, br.
  • Authorization — данные для аутентификации: Authorization: Bearer <token>, Authorization: Basic <base64>.
  • Cookie — сохранённые cookies для этого домена: Cookie: session_id=abc123; theme=dark.
  • Referer — URL страницы, с которой пришёл запрос. Полезен для аналитики, но ограничен политиками приватности.
  • Origin — источник запроса (протокол + домен + порт). Ключевой для CORS: Origin: https://example.com.
  • If-Modified-Since / If-None-Match — условные запросы для кэширования (см. урок 6-4).

Заголовки ответа (response headers)

Сервер сообщает клиенту о результате и правилах обработки:

  • Content-Type — формат данных в теле ответа. Критически важен: Content-Type: text/html; charset=utf-8, Content-Type: application/json.
  • Content-Length — размер тела в байтах.
  • Content-Encoding — как сжато тело: Content-Encoding: gzip, Content-Encoding: br.
  • Set-Cookie — просит браузер сохранить cookie: Set-Cookie: session_id=abc; HttpOnly; Secure.
  • Cache-Control — инструкции по кэшированию (подробно в уроке 6-4).
  • ETag — версия ресурса для условных запросов: ETag: "abc123".
  • Location — URL для перенаправления (с кодами 3xx) или нового ресурса (с 201 Created).
  • Access-Control-Allow-Origin — разрешённые источники для кросс-доменных запросов (CORS): Access-Control-Allow-Origin: https://example.com.
  • Server — какой веб-сервер отвечает: Server: nginx/1.25.
  • WWW-Authenticate — запрос аутентификации (с 401): WWW-Authenticate: Bearer realm="API".

Общие заголовки (general headers)

Присутствуют и в запросах, и в ответах:

  • Connection — управление TCP-соединением: Connection: keep-alive, Connection: close.
  • Date — дата и время формирования сообщения: Date: Wed, 30 Apr 2026 12:00:00 GMT.
  • Transfer-Encoding — способ кодирования тела при передаче: Transfer-Encoding: chunked.

Заголовки для безопасности

Отдельная важная группа (подробно в модуле 11):

  • Strict-Transport-Security (HSTS) — «всегда использовать HTTPS»: Strict-Transport-Security: max-age=31536000.
  • Content-Security-Policy (CSP) — ограничение источников скриптов, стилей и другого контента.
  • X-Frame-Options — запрет на встраивание в iframe.
  • X-Content-Type-Options — запрет на угадывание MIME-типа браузером: nosniff.

Как читать заголовки

В браузере: DevTools → Network → выбрать запрос → вкладка Headers. Там видны все заголовки запроса и ответа, разложенные по категориям.

Через curl: флаг -v (verbose) показывает все отправленные и полученные заголовки:

curl -v https://api.example.com

Проверь себя

  1. Какой заголовок указывает формат данных в HTTP-ответе?
  2. Зачем нужен Accept-Encoding?
  3. Чем Origin отличается от Referer?
<details> <summary>Ответы</summary>
  1. Content-Type. Например, text/html для веб-страницы, application/json для API-ответа.
  2. Accept-Encoding сообщает серверу, какие алгоритмы сжатия поддерживает клиент (gzip, brotli). Сервер может сжать ответ, экономя трафик.
  3. Origin содержит только протокол + домен + порт (без пути). Referer содержит полный URL предыдущей страницы. Origin используется для CORS, Referer — для аналитики.
</details>

Что унести с урока

  • Заголовки делятся на request, response и general.
  • Content-Type, Authorization, Cookie, Cache-Control — самые используемые.
  • Безопасность: HSTS, CSP, X-Frame-Options — заголовки для защиты пользователей.
  • Заголовки видны в DevTools Network и через curl -v.

В следующем уроке разберём механизм cookies — как HTTP, будучи stateless-протоколом, хранит сессии и предпочтения.

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике