Что такое заголовки HTTP?

Заголовки HTTP — это пары «ключ‑значение», передаваемые в составе HTTP‑запросов и ответов для обмена метаданными между клиентом (например, браузером) и сервером. Они уточняют контекст взаимодействия: описывают содержимое, управляют кэшированием, аутентификацией, безопасностью и др.

Как выглядят

Формат строго регламентирован:

ИмяЗаголовка: значение
  • Имя не чувствительно к регистру.
  • После двоеточия может идти пробел (игнорируется).
  • Каждое поле — отдельная строка.

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

GET /page.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html

Основные категории заголовков

  1. Общие (General Headers)
    Применяются и к запросам, и к ответам, но не касаются тела сообщения.
    Пример: Date, Connection.
  2. Заголовки запроса (Request Headers)
    Сообщают серверу информацию о клиенте и желаемом ресурсе.
    Примеры:
    • Host — доменное имя сервера.
    • User-Agent — сведения о браузере/ОС.
    • Accept — типы контента, которые клиент готов принять (text/html, application/json и т. п.).
  3. Заголовки ответа (Response Headers)
    Передают клиенту данные о сервере и способе доставки ресурса.
    Примеры:
    • Server — программное обеспечение сервера.
    • Location — новый URL при перенаправлении (статус 3xx).
    • WWW-Authenticate — схема аутентификации.
  4. Заголовки сущности (Entity Headers)
    Описывают тело сообщения (размер, тип, кодировку).
    Примеры:
    • Content-Type — MIME-тип данных (text/plain, image/png).
    • Content-Length — размер тела в байтах.
    • Content-Encoding — метод сжатия (gzip, deflate).

Ключевые примеры заголовков

  • Authorization — учетные данные для аутентификации (например, JWT-токен).
  • Cookie — отправляет сохранённые куки на сервер.
  • Set-Cookie — сервер просит клиент сохранить куки.
  • Cache-Control — правила кэширования (no-cache, max-age=3600).
  • ETag — идентификатор версии ресурса для валидации кэша.
  • Content-Disposition — указывает, отображать ли контент в браузере или предлагать скачать (attachment).
  • Referer — URL страницы, откуда пришёл запрос.
  • User-Agent — информация о клиенте (браузер, ОС, устройство).

Зачем нужны

  • Управление кэшированием — сокращают нагрузку на сервер и ускоряют загрузку.
  • Аутентификация и авторизация — обеспечивают доступ только уполномоченным пользователям.
  • Тип контента — позволяют клиенту правильно обработать ответ (текст, изображение, JSON и т. д.).
  • Перенаправления — указывают новый адрес ресурса.
  • Безопасность — ограничивают источники запросов (CORS), задают политики контента (Content-Security-Policy).
  • Сжатие — уменьшают объём передаваемых данных (Content-Encoding: gzip).
  • Сеансы — поддерживают состояние через куки.

Важные нюансы

  • Заголовки не содержат самих данных — они лишь описывают запрос/ответ.
  • Многие заголовки стандартны (определены в RFC), но можно создавать пользовательские (рекомендуется префикс X-, хотя это уже не обязательно).
  • Размер заголовков ограничен (зависит от сервера/прокси).
  • Некоторые заголовки чувствительны к порядку или взаимодействуют друг с другом (например, Cache-Control и ETag).

Таким образом, заголовки HTTP — это «метаинструкция» для корректного, безопасного и эффективного обмена данными в веб.