← Назад к вопросам

Какие заголовки могут быть в HTTP запросе?

2.0 Middle🔥 141 комментариев
#JavaScript Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Заголовки HTTP запроса: структура и классификация

В HTTP запросе заголовки (Headers) представляют собой ключевой механизм передачи метаданных между клиентом (например, браузером) и сервером. Они определяют параметры запроса, конфигурацию соединения, информацию о клиенте и многие другие аспекты взаимодействия. Заголовки состоят из имени (header name) и значения (header value), разделенных двоеточием, и следуют после стартовой линии запроса (Request Line).

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

Заголовки можно классифицировать по их функциональному назначению. Вот основные группы:

1. Общие заголовки (General Headers)

Эти заголовки могут использоваться как в запросах, так и в ответах. Они управляют общими аспектами передачи данных.

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

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

Содержат информацию о ресурсе, который клиент хочет получить, и о самом клиенте.

  • Accept: Определяет типы медиаданных, которые клиент может обработать (например, text/html, application/json).
  • Accept-Encoding: Указывает поддерживаемые методы кодирования содержимого (например, gzip, deflate).
  • Accept-Language: Предпочтительные языки для ответа (например, en-US, ru-RU).
  • Authorization: Содержит credentials для аутентификации на сервере (часто используется с Bearer токенами или Basic Auth).
  • User-Agent: Строка, идентифицирующая клиентское приложение (браузер, операционная система). Важно: этот заголовок исторически использовался для определения возможностей клиента, но сейчас часто считается unreliable из-за возможности подделки.
  • Referer (обратите внимание на историческую орфографию): URL ресурса, с которого был сделан текущий запрос.

3. Заголовки тела сообщения (Entity Headers или Payload Headers)

Описывают метаданные, относящиеся к телу запроса (payload), если оно присутствует.

  • Content-Type: Указывает MIME-type тела запроса (например, application/json для JSON данных, multipart/form-data для форм с файлами).
  • Content-Length: Размер тела сообщения в байтах (обязателен для некоторых типов запросов).
  • Content-Encoding: Метод кодирования, примененный к телу запроса (например, gzip).

4. Заголовки для управления соединением и производительностью

  • Host: Обязательный заголовок в HTTP/1.1. Указывает домен и порт сервера, на который отправляется запрос. Это критически важно при работе с виртуальными хостами (multiple domains on one IP).
GET /api/users HTTP/1.1
Host: example.com:8080
  • Origin: Используется в механизме CORS (Cross-Origin Resource Sharing). Указывает источник (protocol, domain, port) запроса. Сервер использует его для определения, разрешен ли cross-origin запрос.
  • If-Modified-Since, If-None-Match: Условные заголовки для оптимизации. Позволяют клиенту запросить ресурс только если он был изменен после указанной даты или не соответствует указанному ETag. Это снижает нагрузку на сеть.

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

Рассмотрим типичный POST запрос для отправки JSON данных на API с аутентификацией:

POST /api/v1/orders HTTP/1.1
Host: api.store.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64)
Accept: application/json
Accept-Language: ru-RU, ru;q=0.9, en;q=0.8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json
Content-Length: 127
Cache-Control: no-cache
Connection: keep-alive

{
  "productId": 42,
  "quantity": 2
}

Особенности и современные практики

  • Кастомные заголовки (Custom Headers): Разработчики могут создавать свои заголовки, обычно начинающиеся с X- (например, X-API-Key, X-Custom-Auth). Однако стандарт рекомендует избегать этого префикса для новых стандартизированных заголовков.
  • Заголовки и безопасность: Некоторые заголовки, такие как Cookie (передает cookies клиента) или Authorization, содержат чувствительную информацию и должны передаваться только через защищенные соединения (HTTPS).
  • Заголовки в HTTP/2 и HTTP/3: В современных версиях протокола заголовки передаются в binary формате и могут быть сжаты для повышения производительности, но их семантическое значение остается неизменным.
  • Заголовки для оптимизации и аналитики: В реальных приложениях часто используются заголовки для трассировки (X-Trace-ID), управления версиями API (Accept-Version), или передачи контекста пользователя (X-User-ID).

Понимание заголовков HTTP запроса — фундаментальная часть знаний фронтенд-разработчика, поскольку они напрямую влияют на поведение браузера, безопасность приложения, производительность сетевых взаимодействий и корректную работу с backend API. Правильное использование заголовков позволяет тонко настроить запросы, реализовать эффективную аутентификацию, управлять кэшированием и обеспечить кросс-доменную совместимость через CORS.