HTTP-заголовки передают служебную информацию между клиентом и сервером. Они помогают понять, какой контент отправляется, как браузеру его кешировать, куда выполняется перенаправление, разрешены ли CORS-запросы, какие политики безопасности включены и как запрос проходит через CDN или reverse proxy.
При диагностике сайта заголовки часто дают больше информации, чем сама HTML-страница. По ним можно увидеть тип ответа, кодировку, кеширование, редиректы, серверную инфраструктуру, cookies и часть защитных настроек.
В этом руководстве разберём основные request и response headers, покажем практические команды curl и объясним, какие заголовки действительно полезны при поиске ошибок.
Что такое HTTP-заголовок
HTTP-заголовок состоит из имени и значения.
Пример:
Content-Type: text/html; charset=UTF-8
В одном HTTP-запросе или ответе может передаваться много заголовков.
Request и response headers
Заголовки делятся по направлению.
Request headers отправляет клиент:
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
Response headers возвращает сервер:
Content-Type: text/html
Cache-Control: max-age=300
Server: nginx
Как посмотреть заголовки через curl
Самый простой вариант:
curl -I https://example.com/
Он выполняет запрос и показывает заголовки ответа.
Как посмотреть заголовки подробно
curl -v https://example.com/
Verbose-режим показывает детали соединения и заголовки в обе стороны.
Как посмотреть только response headers
curl -sS -D - -o /dev/null https://example.com/
Что показывает Host
Host сообщает серверу, к какому доменному имени обращается клиент.
Host: example.com
На одном IP может обслуживаться множество сайтов, поэтому правильный Host критически важен.
Почему Host важен при диагностике
Если запрос отправить только на IP без правильного имени, сервер может выбрать другой virtual host.
Поэтому проверка сайта по IP не всегда репрезентативна.
Что показывает User-Agent
User-Agent описывает клиент.
User-Agent: Mozilla/5.0
Сервер может использовать его для:
- аналитики;
- совместимости;
- защиты от ботов;
- выдачи разных вариантов ответа.
Что показывает Accept
Accept сообщает серверу, какие типы содержимого клиент готов получить.
Accept: text/html,application/xhtml+xml
Что показывает Accept-Encoding
Accept-Encoding: gzip, br
Клиент сообщает, какие алгоритмы сжатия он поддерживает.
Что показывает Accept-Language
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Некоторые сайты используют этот заголовок для выбора языка.
Что такое Authorization
Authorization используется для передачи данных аутентификации.
Пример:
Authorization: Bearer TOKEN
Такие данные нельзя публиковать в логах и диагностических скриншотах без необходимости.
Что такое Cookie
Клиент отправляет сохранённые cookies:
Cookie: session=abc123
Cookies часто используются для сессии, авторизации и пользовательских настроек.
Что такое Referer
Referer может содержать адрес страницы, с которой пользователь перешёл на текущий ресурс.
Его наличие зависит от политики браузера и Referrer-Policy.
Что показывает Content-Type
Content-Type сообщает тип передаваемого содержимого.
Content-Type: text/html; charset=UTF-8
Для API часто встречается:
Content-Type: application/json
Почему неправильный Content-Type создаёт проблемы
Если сервер отдаёт неверный MIME type, браузер или клиент может неправильно интерпретировать содержимое.
Это особенно важно для:
- JavaScript;
- CSS;
- JSON;
- изображений;
- файлов загрузки.
Что показывает Content-Length
Content-Length может содержать размер тела ответа в байтах.
Content-Length: 12345
Но при chunked transfer или некоторых современных протоколах этого заголовка может не быть.
Что такое Location
Location обычно используется при перенаправлениях.
HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/
Как проверить цепочку redirect
curl -IL http://example.com/
Так можно увидеть каждый промежуточный HTTP-ответ.
Что такое Cache-Control
Cache-Control управляет кешированием.
Пример:
Cache-Control: public, max-age=3600
Это означает, что ресурс можно кешировать определённое время.
Что означает no-cache
no-cache не обязательно означает полный запрет хранения.
Чаще это требует повторной проверки актуальности перед использованием кешированной копии.
Что означает no-store
Cache-Control: no-store
Такой ответ не должен сохраняться в обычном кеше.
Что такое ETag
ETag — идентификатор версии ресурса.
ETag: "abc123"
Клиент может использовать его для условного запроса.
Что такое If-None-Match
Клиент может отправить:
If-None-Match: "abc123"
Если ресурс не изменился, сервер может ответить:
304 Not Modified
Что такое Last-Modified
Last-Modified: Mon, 05 Oct 2026 08:00:00 GMT
Это дата последнего изменения ресурса по мнению сервера.
Что такое If-Modified-Since
Клиент может использовать дату для условного запроса и получить 304, если содержимое не изменилось.
Что такое Expires
Expires — более старый механизм указания срока актуальности кеша.
Сегодня чаще основную роль играет Cache-Control.
Что показывает Server
Пример:
Server: nginx
Он может раскрывать часть информации о серверной технологии.
Некоторые администраторы скрывают или сокращают это значение.
Что показывает X-Powered-By
Иногда приложение сообщает технологию:
X-Powered-By: PHP
Излишнее раскрытие версии ПО может быть нежелательным.
Что такое Set-Cookie
Сервер создаёт или изменяет cookie:
Set-Cookie: session=abc123; Secure; HttpOnly; SameSite=Lax
У cookie могут быть важные защитные атрибуты.
Что означает Secure
Cookie с флагом Secure должна передаваться через защищённое HTTPS-соединение.
Что означает HttpOnly
HttpOnly ограничивает доступ к cookie из JavaScript.
Что означает SameSite
SameSite управляет отправкой cookie в межсайтовых сценариях и помогает уменьшать некоторые риски CSRF.
Что такое CORS
CORS управляет тем, какие web origins могут обращаться к ресурсу из браузера.
Основной заголовок:
Access-Control-Allow-Origin: https://example.com
Почему CORS — не firewall
CORS в первую очередь является браузерным механизмом контроля межсайтовых запросов.
Он не заменяет серверную авторизацию и сетевые ограничения.
Что такое Content-Security-Policy
CSP позволяет ограничивать источники контента, которые браузеру разрешено загружать.
Пример:
Content-Security-Policy: default-src 'self'
CSP является важной частью защиты web-приложения, но требует аккуратной настройки.
Что такое Strict-Transport-Security
HSTS сообщает браузеру, что домен должен использовать HTTPS.
Strict-Transport-Security: max-age=31536000
Ошибочная HSTS-конфигурация может иметь длительные последствия, поэтому включать её нужно осознанно.
Что такое X-Content-Type-Options
X-Content-Type-Options: nosniff
Помогает запретить браузеру MIME-sniffing в ряде сценариев.
Что такое Referrer-Policy
Определяет объём информации, отправляемой в Referer при переходах и запросах.
Что такое Permissions-Policy
Позволяет ограничивать доступ страницы к отдельным возможностям браузера.
Что такое X-Frame-Options
Исторически используется для ограничения встраивания страницы во frame или iframe.
В современных политиках многие задачи лучше решать через CSP frame-ancestors.
Заголовки CDN и reverse proxy
При использовании CDN или proxy можно увидеть дополнительные поля.
Например:
Via:
X-Cache:
X-Request-ID:
CF-Cache-Status:
X-Forwarded-For:
X-Forwarded-Proto:
Конкретные имена зависят от инфраструктуры.
Что такое X-Forwarded-For
Reverse proxy может передавать исходный IP клиента:
X-Forwarded-For: 198.51.100.25
Но доверять этому заголовку можно только в правильно настроенной proxy-архитектуре, потому что внешний клиент способен самостоятельно отправить одноимённый header.
Что такое X-Forwarded-Proto
Помогает backend понять исходную схему запроса:
X-Forwarded-Proto: https
Это важно, когда TLS завершается на reverse proxy.
Что такое request ID
Некоторые системы добавляют идентификатор запроса:
X-Request-ID: 8f02...
Он очень полезен при сопоставлении пользовательской ошибки с серверными логами.
Как заголовки помогают диагностировать кеш CDN
CDN может добавлять признаки:
- cache hit;
- cache miss;
- age;
- edge location;
- proxy chain.
Это помогает понять, получил ли пользователь ответ из кеша или от origin.
Что такое Age
Age: 120
Обычно показывает возраст кешированного ответа в секундах.
Почему заголовки могут отличаться по регионам
CDN, балансировщики и географическая маршрутизация могут приводить к разным ответам.
Поэтому внешняя проверка из разных точек может быть полезна.
Как добавить свой заголовок в curl
curl -I \
-H 'User-Agent: NexIP-Test' \
https://example.com/
Как проверить API с Authorization
curl \
-H 'Authorization: Bearer TOKEN' \
https://api.example.com/
Не публикуйте реальные токены в логах, скриншотах и общедоступных диагностических отчётах.
Как проверить конкретный Host на IP
Для HTTP:
curl -I \
-H 'Host: example.com' \
http://203.0.113.10/
Для HTTPS предпочтительнее использовать --resolve, чтобы корректно работал и SNI:
curl -I \
--resolve example.com:443:203.0.113.10 \
https://example.com/
Как проверить HTTP-заголовки через NexIP
Инструмент HTTP Headers NexIP позволяет получить заголовки сайта без ручной работы с терминалом.
При анализе полезно смотреть на:
- status;
- Location;
- Content-Type;
- Cache-Control;
- Server;
- Set-Cookie;
- security headers;
- CDN/proxy headers.
Как связать заголовки с проблемой доступности
Если сайт не открывается, сначала выполните общую диагностику.
После успешного DNS/TCP/TLS именно HTTP headers помогают понять, что произошло уже на web-уровне.
Полный порядок разобран в статье «Как проверить доступность сайта».
Связь HTTP-заголовков с SSL/TLS
HTTP headers появляются только после успешного TLS handshake при HTTPS.
Если сертификат или TLS не работают, до HTTP-заголовков клиент вообще не дойдёт.
Подробнее: SSL/TLS и HTTPS.
Типовые ошибки
Неправильный Content-Type
Проверьте MIME type и конфигурацию сервера.
Бесконечный redirect
Посмотрите всю цепочку через curl -IL.
Сайт не обновляется
Проверьте Cache-Control, ETag, CDN и браузерный кеш.
API блокируется браузером
Проверьте CORS headers.
Приложение считает запрос HTTP вместо HTTPS
При reverse proxy проверьте X-Forwarded-Proto и доверие к proxy.
Backend видит IP прокси вместо пользователя
Проверьте архитектуру X-Forwarded-For / Forwarded и список доверенных proxy.
Что важно запомнить
- HTTP headers передают служебные параметры запроса и ответа.
- Request и response headers решают разные задачи.
- Host критически важен для virtual hosting.
- Content-Type определяет тип содержимого.
- Location используется в redirects.
- Cache-Control, ETag и Last-Modified связаны с кешированием.
- CORS не заменяет авторизацию.
- Security headers нужно оценивать в контексте.
- Proxy headers нельзя безусловно доверять от любого клиента.
- curl и NexIP позволяют быстро исследовать HTTP-ответ.
FAQ
Как посмотреть HTTP-заголовки сайта?
Используйте HTTP Headers в NexIP или команду curl -I https://example.com/.
Что важнее всего проверить?
Status, Location, Content-Type, Cache-Control, cookies, security headers и признаки CDN/proxy.
Почему curl -I и браузер могут показывать разные ответы?
Могут отличаться User-Agent, cookies, HTTP-метод, кеш, география и поведение защиты.
Можно ли определить сервер по Server header?
Иногда частично, но значение можно изменить или скрыть.
Почему CORS работает в curl, но не в браузере?
Потому что CORS в первую очередь контролируется браузером.
Что означает 304?
Ресурс не изменился относительно условного запроса, и клиент может использовать кешированную копию.
Можно ли доверять X-Forwarded-For?
Только если приложение получает его через контролируемую цепочку доверенных proxy.
Какие заголовки отвечают за безопасность?
Часто анализируют CSP, HSTS, X-Content-Type-Options, Referrer-Policy, Permissions-Policy и настройки cookies, но безопасность нельзя оценивать только по наличию нескольких headers.
More practical guides are waiting in the NexIP journal.
NEXIP / TOOLS
Put it into practice
Use NexIP tools to check the parameters covered in this article.
Проверка сайта
Проверяет доступность сайта, HTTP-статус, редиректы и время ответа.
Open toolПроверка HTTP-заголовков
Показывает ответные HTTP-заголовки и проверяет базовые защитные заголовки.
Open toolПроверка SSL-сертификата
Проверяет TLS-соединение, доверие к сертификату, даты, SAN, цепочку, протокол и совпадение домена.
Open toolNEXIP / DIAGNOSTICS
Verify what matters
Check a website, domain or network settings with real NexIP diagnostics.
Continue reading
Related materials
Нейросеть уже покупает за вас: как искусственный интеллект получает доступ к нашим деньгам
Нейросети перестают быть обычными советчиками и начинают покупать товары от имени людей. Shopify уже открыла доступ ИИ-агентам к миллиардам товаров, а Visa исследует платежи между программами. Но кто ответит, если алгоритм потратит деньги неправильно? Разбираемся, как меняется интернет-торговля и почему привычные магазины могут столкнуться с совершенно новым типом покупателей.
ReadКак проверить доступность сайта
Пошаговая диагностика недоступного сайта: домен, DNS, IP, маршрут, TCP, TLS, HTTP-коды, curl, IPv4/IPv6, CDN и проверка через NexIP.
ReadHTTP-коды ответа: что означают 200, 301, 404, 500 и другие
Когда браузер открывает страницу, сервер отвечает не только HTML-кодом. Вместе с ответом он отправляет числовой HTTP-статус: 200, 301, 404, 500 и так далее. Эти три цифры часто позволяют понять проблему быстрее, чем длинное сообщение…
ReadFAQ
Frequently asked questions
Можно ли выполнить эту проверку самостоятельно?
Да. В материале описана безопасная последовательность действий и указаны подходящие инструменты NexIP. Для изменения настроек сервера или DNS могут понадобиться доступы к панели провайдера.
Когда нужно повторить проверку?
Повторите её после внесения изменений и завершения времени обновления. Сохраните исходный результат, чтобы увидеть, что именно изменилось.