Заголовки 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
Проверь себя
- Какой заголовок указывает формат данных в HTTP-ответе?
- Зачем нужен
Accept-Encoding? - Чем
Originотличается отReferer?
Content-Type. Например,text/htmlдля веб-страницы,application/jsonдля API-ответа.Accept-Encodingсообщает серверу, какие алгоритмы сжатия поддерживает клиент (gzip, brotli). Сервер может сжать ответ, экономя трафик.Originсодержит только протокол + домен + порт (без пути).Refererсодержит полный URL предыдущей страницы.Originиспользуется для CORS,Referer— для аналитики.
Что унести с урока
- Заголовки делятся на request, response и general.
Content-Type,Authorization,Cookie,Cache-Control— самые используемые.- Безопасность: HSTS, CSP, X-Frame-Options — заголовки для защиты пользователей.
- Заголовки видны в DevTools Network и через
curl -v.
В следующем уроке разберём механизм cookies — как HTTP, будучи stateless-протоколом, хранит сессии и предпочтения.