Справочник HTTP-заголовков
Полный справочник HTTP-заголовков с описанием, синтаксисом и примерами.
Accept
Запрос
Заголовок Accept сообщает серверу, какие типы контента клиент может обработать. Сервер использует это для согласования контента и возврата наиболее подходящего формата.
Можно перечислить несколько типов с коэффициентами качества (q), указывающими предпочтительный порядок. Если заголовок отсутствует, сервер может вернуть любой тип контента.
Accept: <MIME_тип>/<MIME_подтип>, <MIME_тип>/*;q=<качество>Accept: text/html, application/json;q=0.9, */*;q=0.8Accept-Encoding
Запрос
Заголовок Accept-Encoding сообщает серверу, какие алгоритмы сжатия поддерживает клиент. Сервер может сжать тело ответа соответствующим образом, уменьшив объём передачи.
Распространённые значения: gzip, deflate, br (Brotli) и identity (без кодирования). Символ * означает принятие любой кодировки.
Accept-Encoding: gzip, deflate, brAccept-Encoding: gzip, deflate, brAccept-Language
Запрос
Заголовок Accept-Language сообщает серверу, какие языки предпочитает клиент. Серверы используют его для отдачи локализованного контента при наличии.
Значения используют теги языков BCP 47 (например, ru-RU, en). Коэффициенты качества указывают порядок предпочтения; * соответствует любому языку.
Accept-Language: <язык>, <язык>;q=<качество>Accept-Language: ru-RU, ru;q=0.9, en-US;q=0.8, en;q=0.7Authorization
Запрос
Заголовок Authorization передаёт учётные данные для аутентификации клиента. Отправляется в ответ на вызов 401 Unauthorized или превентивно для защищённых ресурсов.
Наиболее распространённые схемы: Bearer (для токенов OAuth 2.0) и Basic (имя пользователя:пароль в Base64). Никогда не используйте Basic по незашифрованным соединениям.
Authorization: <схема> <учётные_данные>Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Cookie
Запрос
Заголовок Cookie передаёт сохранённые HTTP-куки на сервер. Браузеры автоматически включают куки, соответствующие домену, пути и требованиям безопасности запроса.
Куки устанавливаются сервером через Set-Cookie и широко используются для управления сессиями, персонализации и отслеживания. Для безопасности куки должны иметь атрибуты HttpOnly, Secure и SameSite.
Cookie: <имя>=<значение>; <имя>=<значение>Cookie: session_id=abc123; user_pref=dark_themeHost
Запрос
Заголовок Host является обязательным в запросах HTTP/1.1. Он указывает доменное имя (и необязательный порт) сервера, на который направлен запрос, обеспечивая виртуальный хостинг на одном IP-адресе.
В HTTP/2 и HTTP/3 псевдозаголовок :authority заменяет Host, выполняя ту же функцию. Отсутствующий или неверный Host приводит к ошибке 400 Bad Request.
Host: <хост>:<порт>Host: enterno.ioIf-Modified-Since
Запрос
Заголовок If-Modified-Since делает GET или HEAD запрос условным на основе временной метки. Если ресурс не был изменён с указанной даты, сервер возвращает 304 Not Modified без тела.
Работает совместно с заголовком ответа Last-Modified и является более простой (но менее точной) альтернативой паре If-None-Match / ETag.
If-Modified-Since: <день-недели>, <день> <месяц> <год> <ч>:<м>:<с> GMTIf-Modified-Since: Wed, 26 Mar 2025 07:28:00 GMTIf-None-Match
Запрос
Заголовок If-None-Match делает GET или HEAD запрос условным. Клиент отправляет значение ETag из предыдущего ответа; если ресурс не изменился, сервер возвращает 304 Not Modified вместо полного тела ответа.
Это основной механизм валидации кеша с использованием ETag, который уменьшает объём передачи данных.
If-None-Match: "<значение_etag>"If-None-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"Origin
Запрос
Заголовок Origin отправляется с кросс-origin запросами (и одноorigin POST-запросами). Сообщает серверу, откуда пришёл запрос, позволяя серверу принять решение о доступе через CORS.
В отличие от Referer, Origin не включает путь. Автоматически устанавливается браузером и не может быть переопределён JavaScript.
Origin: <схема>://<хостнейм>:<порт>Origin: https://enterno.ioRange
Запрос
Заголовок Range указывает серверу отправить только часть ресурса. Используется для возобновляемых загрузок, видеостриминга и передачи больших файлов.
Если сервер поддерживает диапазоны, он отвечает 206 Partial Content и заголовком Content-Range. При отсутствии поддержки или неверном диапазоне возвращается полный ресурс с 200 OK или ошибка 416 Range Not Satisfiable.
Range: bytes=<начало>-<конец>Range: bytes=0-1023Referer
Запрос
Заголовок Referer (историческая опечатка) указывает URL ресурса, из которого поступил текущий запрос. Помогает серверам отслеживать потоки навигации и источники трафика.
Браузеры контролируют отправку этого заголовка на основе Referrer-Policy, установленной на ссылающейся странице. Заголовок не отправляется при прямой навигации, закладках и при переходе с HTTPS на HTTP.
Referer: <url>Referer: https://enterno.io/toolsUser-Agent
Запрос
Заголовок User-Agent содержит строку, идентифицирующую клиентское ПО. Серверы и инструменты аналитики используют его для определения браузеров, ботов и клиентских платформ.
Формат приблизительно стандартизирован: обычно включает токены продукта, номера версий и комментарии. Боты и краулеры отправляют собственные строки (например, Googlebot). Заголовок может быть подделан, поэтому не следует использовать его для контроля доступа.
User-Agent: <продукт>/<версия> (<системная_информация>) <платформа>User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36Connection
Ответ
Connection определяет, остаётся ли соединение открытым. HTTP/1.1 по умолчанию использует keep-alive.
Connection: close сообщает клиенту о закрытии соединения после ответа.
Не используется в HTTP/2 и HTTP/3 — управление соединениями на уровне протокола.
Connection: keep-alive | closeConnection: keep-aliveContent-Disposition
Ответ
Заголовок Content-Disposition управляет обработкой ответа браузером. При значении inline браузер отображает содержимое. При attachment запускается загрузка файла с необязательным именем filename.
Также используется в multipart form data для описания полей формы. Для безопасности всегда санируйте имя файла во избежание path traversal атак.
Content-Disposition: inline | attachment; filename="<имя_файла>"Content-Disposition: attachment; filename="report-2026-03.pdf"Content-Encoding
Ответ
Content-Encoding указывает алгоритм сжатия тела ответа. Браузер распаковывает содержимое перед обработкой.
Основные значения: gzip, br (Brotli), deflate. Выбирается на основе Accept-Encoding.
Сжатие уменьшает размер передачи на 60-80% для текстовых ресурсов. Включите gzip и Brotli.
Content-Encoding: gzip | br | deflate | identityContent-Encoding: gzipContent-Length
Ответ
Content-Length указывает точный размер тела ответа в байтах, позволяя браузеру определить завершение передачи.
Обеспечивает эффективное переиспользование соединения. Без него сервер использует chunked encoding.
Автоматически устанавливается для статических файлов. Неправильные значения приводят к неполным ответам.
Content-Length: <размер-в-байтах>Content-Length: 3495Content-Type
Ответ
Content-Type определяет MIME-тип и кодировку тела ответа. Один из фундаментальных HTTP-заголовков.
Состоит из медиа-типа (например, text/html, application/json) и опционального параметра кодировки.
Неправильный Content-Type вызывает проблемы отображения и уязвимости. Всегда указывайте явно с X-Content-Type-Options: nosniff.
Content-Type: <медиа-тип>; charset=<кодировка>Content-Type: text/html; charset=UTF-8Date
Ответ
Date содержит дату и время создания сообщения в формате HTTP-date (RFC 7231).
Автоматически устанавливается серверами. Важен для кеширования — валидаторы вычисляют возраст ответа.
Рекомендуется синхронизация часов через NTP.
Date: <день-недели>, <день> <месяц> <год> <часы>:<минуты>:<секунды> GMTDate: Tue, 12 Mar 2026 10:30:00 GMTETag
Ответ
ETag предоставляет уникальный идентификатор версии ресурса. Браузеры отправляют его через If-None-Match для ответов 304 Not Modified.
Может быть строгим (точное совпадение) или слабым (с префиксом W/).
Точнее Last-Modified. Большинство серверов генерируют ETag автоматически.
ETag: "<значение>" | W/"<значение>"ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"Last-Modified
Ответ
Last-Modified указывает, когда ресурс был изменён. Браузеры отправляют через If-Modified-Since для ответов 304.
Хорошо работает для статических файлов, но ограничен точностью до секунды.
Для точной валидации используйте ETag вместе с Last-Modified.
Last-Modified: <день-недели>, <день> <месяц> <год> <часы>:<минуты>:<секунды> GMTLast-Modified: Wed, 11 Mar 2026 08:00:00 GMTLocation
Ответ
Location указывает URL перенаправления. Используется с кодами 3xx (301, 302, 307) и ответами 201 Created.
Значением может быть абсолютный или относительный URL. Браузер перейдёт автоматически.
Важно для SEO: 301-редиректы передают ссылочный вес, 302 — нет.
Location: <url>Location: https://example.com/new-pageRetry-After
Ответ
Заголовок Retry-After отправляется с ответами 429 Too Many Requests, 503 Service Unavailable или редиректами 301/302. Указывает, как долго клиент должен ждать перед повторной попыткой.
Значение может быть задержкой в секундах или абсолютной HTTP-датой. Клиенты должны соблюдать этот заголовок для избегания перегрузки сервера и корректной реализации логики отступления.
Retry-After: <задержка-в-секундах> | <http-дата>Retry-After: 120Server
Ответ
Server определяет ПО сервера. Типичные значения: nginx, Apache, cloudflare.
Может помочь злоумышленникам найти уязвимости. Рекомендуется удалять или обобщать.
В nginx: server_tokens off;. В Apache: ServerTokens Prod.
Server: <продукт>Server: nginxSet-Cookie
Ответ
Set-Cookie отправляет cookies браузеру. Обеспечивает сессии, предпочтения и отслеживание.
Атрибуты: Secure (только HTTPS), HttpOnly (недоступен для JS), SameSite (Strict/Lax/None), Path, Domain, Max-Age.
Для безопасности: всегда Secure; HttpOnly; SameSite=Lax для сессий. Не храните конфиденциальные данные в cookie.
Set-Cookie: <имя>=<значение>; Path=/; Secure; HttpOnly; SameSite=LaxSet-Cookie: session_id=abc123; Path=/; Secure; HttpOnly; SameSite=Lax; Max-Age=86400Transfer-Encoding
Ответ
Transfer-Encoding определяет кодирование передачи тела ответа. Наиболее распространено: chunked.
Chunked encoding отправляет данные частями, полезен для динамического контента.
Не используется в HTTP/2 — протокол имеет собственный механизм фреймирования.
Transfer-Encoding: chunked | compress | deflate | gzipTransfer-Encoding: chunkedWWW-Authenticate
Ответ
Заголовок ответа WWW-Authenticate отправляется вместе со статусом 401 Unauthorized. Определяет схему(ы) аутентификации для получения доступа: Basic, Digest или Bearer.
Клиент затем включает соответствующие учётные данные в последующих запросах через заголовок Authorization.
WWW-Authenticate: <схема> realm="<область>"WWW-Authenticate: Bearer realm="api.enterno.io", error="invalid_token"Content-Security-Policy
Безопасность
Заголовок Content-Security-Policy (CSP) — один из самых мощных механизмов безопасности для веб-разработчиков. Он определяет список доверенных источников контента, эффективно предотвращая межсайтовый скриптинг (XSS) и другие атаки с внедрением кода.
CSP работает через директивы, управляющие загрузкой ресурсов: default-src задаёт политику по умолчанию, script-src контролирует источники JavaScript, style-src управляет CSS, а img-src — изображениями.
Правильная реализация CSP требует планирования. Начните с Content-Security-Policy-Report-Only для мониторинга нарушений без блокировки, затем постепенно ужесточайте политику.
Content-Security-Policy: <директива> <источник>; <директива> <источник>Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.comCross-Origin-Opener-Policy
Безопасность
Cross-Origin-Opener-Policy (COOP) контролирует, разделяет ли документ контекст просмотра с кросс-доменными документами. Защита от атак Spectre.
Значения: unsafe-none (по умолчанию), same-origin-allow-popups, same-origin (полная изоляция).
Часто используется вместе с Cross-Origin-Embedder-Policy (COEP) для кросс-доменной изоляции.
Cross-Origin-Opener-Policy: unsafe-none | same-origin-allow-popups | same-originCross-Origin-Opener-Policy: same-originCross-Origin-Resource-Policy
Безопасность
Cross-Origin-Resource-Policy (CORP) сообщает браузеру, какие домены могут включать ресурс. Предотвращает утечку данных.
Значения: same-site, same-origin, cross-origin.
Важен для ресурсов с конфиденциальными данными. Без него любой сайт может встроить ваши ресурсы.
Cross-Origin-Resource-Policy: same-site | same-origin | cross-originCross-Origin-Resource-Policy: same-originPermissions-Policy
Безопасность
Permissions-Policy (ранее Feature-Policy) контролирует доступные функции и API браузера. Предотвращает злоупотребление камерой, микрофоном, геолокацией.
Для каждой функции: * (разрешить всем), self (текущий домен), конкретные источники или () (отключить).
Особенно важен для сайтов со сторонним контентом — ограничение разрешений уменьшает риски.
Permissions-Policy: <функция>=(<список>), <функция>=(<список>)Permissions-Policy: camera=(), microphone=(), geolocation=()Referrer-Policy
Безопасность
Заголовок Referrer-Policy определяет, какая информация передаётся в заголовке Referer. Важно для приватности и безопасности.
Основные значения: no-referrer, same-origin, strict-origin-when-cross-origin, no-referrer-when-downgrade.
Рекомендуемое значение — strict-origin-when-cross-origin: предотвращает утечку путей URL, сохраняя данные для аналитики.
Referrer-Policy: no-referrer | same-origin | strict-origin-when-cross-originReferrer-Policy: strict-origin-when-cross-originStrict-Transport-Security
Безопасность
Заголовок Strict-Transport-Security (HSTS) сообщает браузерам использовать только HTTPS. После получения браузер автоматически преобразует все HTTP-запросы в HTTPS на указанный период.
Директива max-age задаёт время (в секундах) обязательного HTTPS. includeSubDomains распространяет политику на поддомены. preload позволяет включить домен в список предзагрузки HSTS.
HSTS необходим для предотвращения атак «человек посередине», SSL stripping и перехвата cookie.
Strict-Transport-Security: max-age=<секунды>; includeSubDomains; preloadStrict-Transport-Security: max-age=31536000; includeSubDomains; preloadX-Content-Type-Options
Безопасность
Заголовок X-Content-Type-Options со значением nosniff запрещает браузеру определять MIME-тип самостоятельно. Браузер будет строго следовать Content-Type от сервера.
Без этого заголовка браузеры могут пытаться определить тип контента по содержимому. Злоумышленники могут использовать это для атак.
Прост в реализации, не имеет проблем совместимости и рекомендован OWASP.
X-Content-Type-Options: nosniffX-Content-Type-Options: nosniffX-Frame-Options
Безопасность
Заголовок X-Frame-Options определяет, может ли браузер отображать страницу в <frame>, <iframe>, <embed> или <object>. Ключевая защита от clickjacking.
Значения: DENY (запрет), SAMEORIGIN (только тот же домен), ALLOW-FROM uri (устарело).
Современная замена — frame-ancestors в Content-Security-Policy. Для совместимости используйте оба заголовка.
X-Frame-Options: DENY | SAMEORIGINX-Frame-Options: SAMEORIGINX-XSS-Protection
Безопасность
X-XSS-Protection включал фильтр XSS в старых браузерах. Значения: 0 (отключить), 1 (включить), 1; mode=block (блокировать страницу).
Рекомендуемое значение — 0, так как фильтр сам может создавать уязвимости.
Устарел. Современные браузеры удалили XSS-аудитор. Используйте Content-Security-Policy.
X-XSS-Protection: 0 | 1 | 1; mode=blockX-XSS-Protection: 0Age
Кеширование
Age показывает время в секундах хранения ответа в кеше. Обычно добавляется CDN.
В сочетании с Cache-Control: max-age позволяет вычислить оставшуюся свежесть.
Полезен для отладки. Если Age всегда 0, кеш может не работать.
Age: <секунды>Age: 3600Cache-Control
Кеширование
Cache-Control — основной механизм управления HTTP-кешированием. Задаёт директивы для браузера и CDN/прокси.
Ключевые директивы: max-age=N, no-cache (ревалидация), no-store (не кешировать), public, private, must-revalidate, immutable.
Лучшая практика: длинный max-age с версионными URL для статики, короткий для HTML.
Cache-Control: <директива>, <директива>Cache-Control: public, max-age=31536000, immutableExpires
Кеширование
Expires задаёт абсолютную дату устаревания ответа. Оригинальный механизм кеширования HTTP/1.0.
При наличии Cache-Control: max-age и Expires приоритет имеет Cache-Control.
Ограничение: нужна синхронизация часов. Cache-Control: max-age предпочтительнее.
Expires: <http-date>Expires: Thu, 12 Mar 2027 10:00:00 GMTPragma
Кеширование
Pragma — устаревший механизм кеширования HTTP/1.0. Единственное стандартное значение: no-cache.
Существует для обратной совместимости. В современных HTTP/1.1+ используйте Cache-Control.
Для старых клиентов включайте оба: Pragma: no-cache и Cache-Control: no-cache.
Pragma: no-cachePragma: no-cacheVary
Кеширование
Vary сообщает кешам, какие заголовки запроса влияют на ответ. Разные значения требуют отдельных кешированных версий.
Распространённые значения: Accept-Encoding, Accept-Language, Cookie.
Осторожно с Vary: Cookie или Vary: * — фактически отключают CDN-кеширование.
Vary: <имя-заголовка>, <имя-заголовка>Vary: Accept-Encoding, Accept-LanguageAccess-Control-Allow-Credentials
CORS
Заголовок ответа Access-Control-Allow-Credentials сообщает браузерам, может ли ответ на кросс-origin запрос с учётными данными (куки, HTTP-аутентификация, клиентские сертификаты) быть доступен JavaScript.
При значении true заголовок Access-Control-Allow-Origin должен указывать явный источник (не *), иначе браузер заблокирует ответ.
Access-Control-Allow-Credentials: trueAccess-Control-Allow-Credentials: trueAccess-Control-Allow-Headers
CORS
Access-Control-Allow-Headers указывает, какие заголовки разрешены в кросс-доменных запросах.
Простые заголовки (Accept, Accept-Language, Content-Language, простой Content-Type) всегда разрешены. Authorization требует явного разрешения.
* разрешает любые заголовки, но не работает с credentials.
Access-Control-Allow-Headers: <имя-заголовка>, <имя-заголовка>Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-WithAccess-Control-Allow-Methods
CORS
Access-Control-Allow-Methods используется в CORS preflight для указания разрешённых HTTP-методов.
Распространённые значения: GET, POST, PUT, DELETE, PATCH, OPTIONS. Preflight отправляется для не-простых методов.
Указывайте только поддерживаемые методы. Лишние расширяют поверхность атаки.
Access-Control-Allow-Methods: <метод>, <метод>Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONSAccess-Control-Allow-Origin
CORS
Access-Control-Allow-Origin — самый важный заголовок CORS. Сообщает браузеру, какие домены могут получить доступ к ответу.
Значение: конкретный источник (например, https://example.com) или *. * нельзя использовать с credentials.
Для безопасности избегайте * на чувствительных эндпоинтах. Проверяйте Origin по белому списку. Добавляйте Vary: Origin.
Access-Control-Allow-Origin: * | <источник>Access-Control-Allow-Origin: https://example.comAccess-Control-Max-Age
CORS
Заголовок Access-Control-Max-Age указывает, сколько секунд браузер может кешировать результат CORS preflight-запроса. В течение этого времени браузеру не нужно отправлять новый preflight для того же ресурса.
Установка разумного значения (например, 3600 секунд) сокращает количество ненужных preflight-запросов и улучшает производительность для приложений с интенсивным API.
Access-Control-Max-Age: <секунды>Access-Control-Max-Age: 3600