Как посмотреть HTTP заголовки (headers)
При отладке работы веб-сервера, может возникнуть необходимость посмотреть HTTP заголовки ответа, которые отдает какая-либо страница сайта посетителю. В данной статье будут рассмотрены несколько простых способов, как это можно сделать.
С помощью онлайн сервиса

Если вам нужно быстро посмотреть заголовки какой-либо страницы, то это можно сделать с помощью онлайн сервисов. Для примера, это можно сделать здесь: https://www.webconfs.com/http-header-check.php Вбиваем нужную страниц сайта и жмем кнопку ‘submit’ в итоге получаем следующую страницу с заголовками:
С помощью curl
Если в вашей системе установлен curl, то с его помощью можно без проблем посмотреть заголовки ответа (Response Headers), полученные от веб-сервера. Для этого достаточно запустить curl со следующими параметрами:
curl -s -D - -o /dev/null https://pc.ru/
После чего мы получим вот такой вот вывод:
HTTP/2 200 server: nginx/1.14.0 (Ubuntu) date: Thu, 14 Jan 2021 16:08:40 GMT content-type: text/html; charset=UTF-8 vary: Accept-Encoding link: ; rel="https://api.w.org/" x-fastcgi-cache: BYPASS
С помощью браузера
Практически все современные браузеры позволяют посмотреть заголовки.
Firefox

Открываем нужную страницу, нажимаем F12 и открываем консоль. Далее, в консоли выбираем логирование «Запросов» и обновляем страницу, после этого, можно будет посмотреть заголовки:
Была ли эта статья Вам полезна?
Что в статье не так? Пожалуйста, помогите нам её улучшить!
Как просмотреть HTTP Headers в Google Chrome?
На браузере Google Chrome вам нужно получить доступ в веб страницу, на которой вы хотите просмотреть информацию Http Header, например:
Нажать на правую кнопку мыши, и выбрать «Inspect» чтобы открыть окно инструментов для программиста (Developer tools)

Выбрать tab «Network», потом refresh (обновить) веб страницу.

После того, как веб страница была refresh (обновлена), выбрать любой адрес слева от Developer Tools. И вы можете увидеть информацию Http Headers.

* Http Request Header *
GET /home/index.php HTTP/1.1 Host: www.eclipse.org Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9 Cookie: eclipse_oxygen=eclipse_oxygen; PHPSESSID=uj5inrbp41sfcd7qpeibl222931duv2t; __utma=264369051.1574847913.1510424825.1510424825.1510424825.1; __utmb=264369051.7.10.1510424825; __utmc=264369051; __utmz=264369051.1510424825.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
* Http Response Header *
HTTP/1.1 200 OK Date: Sat, 11 Nov 2017 19:07:31 GMT Server: Apache Expires: Mon, 26 Jul 1997 05:00:00 GMT Last-Modified: Sat, 11 Nov 2017 19:07:38 GMT cache-Control: no-store, no-cache, must-revalidate cache-Control: post-check=0, pre-check=0 Pragma: no-cache Vary: Accept-Encoding Content-Encoding: gzip X-NodeID: www-vm2 X-Frame-Options: SAMEORIGIN Content-Length: 7056 Keep-Alive: timeout=3, max=200 Connection: Keep-Alive Content-Type: text/html
HTTP. Какую информацию браузер передает в HTTP заголовках

HTTP — это HyperText Transfer Protocol (протокол передачи гипертекста), который используется для коммуникации с сайтом. Все, что вы сейчас видите в окне браузера, получено с помощью этого протокола.
Когда вы открываете сайт, браузер обменивается с ним данными в HTTP заголовках (HTTP Headers) и отправляет различную информацию о себе.
Запрос браузера может выглядеть так:

В чем опасность HTTP заголовков?
- Становится доступна информация о вашем браузере, системе и IP.
- При использовании прозрачных прокси настоящий IP может передаваться в специальных заголовках, тем самым раскрывая вас.
- Через Referer становится доступен адрес источника, с которого вы перешли на сайт или сделали запрос.
- На основе этих данных сайты могут составить уникальный цифровой отпечаток (fingerprint), с помощью которого вас можно идентифицировать даже после смены IP.
Что такое User Agent?
User Agent — это часть HTTP заголовков, которая содержит информацию о браузере и операционной системе.
Методы сохранения анонимности:
- User Agent можно изменить в настройках некоторых браузеров или с помощью специальных плагинов (например, RMOSChange для Firefox / Internet Explorer, User-Agent Switcher для Chrome, User Agent Changer для Opera).
- Для маскировки Referer можно использовать такие плагины, как Referer Control (для Chrome).
- Существуют утилиты и плагины для прямого редактирования HTTP-запросов. (например, Modify Headers для Google Chrome)
Как вручную изменить User Agent в Firefox:
- Введите в адресной строке: about:config и нажмите “I’ll be careful, i promise!”.

- Найдите в появившемся окне, используя поиск: useragent

- Убедитесь, что параметра general.useragent.override не существует.
- Кликните правой кнопкой на пустом месте и выберите “New” —> “String”.

- Введите в окне: general.useragent.override и нажмите “Ок”.

- Введите новый User Agent (например, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A ) и нажмите “Ок”.

Список примерных конфигураций user agent’ов вы можете найти в Интернете (например, здесь, здесь или здесь).
Вы можете проверить на нашем сайте HTTP-заголовки, которые отправляет ваш браузер:
- QUERY_STRING — параметры, переданные скрипту, если строка запроса представляет собой адрес.
- REQUEST_METHOD — метод запроса, который применялся для вызова скрипта GET или POST.
- REQUEST_URI — содержит имя и параметры скрипта, начиная от корневой директории виртуального хоста, если строка запроса представляет собой адрес.
- SERVER_PROTOCOL — имя и версия информационного протокола, через который была запрошена страница, к примеру ‘HTTP/1.1’.
- REMOTE_ADDR — IP-адрес удаленного клиента, с которого был сделан запрос.
- REMOTE_PORT — порт клиента, через который было установлено соединение с сервером.
- HTTP_ACCEPT — предпочтения клиента относительно типа запрашиваемого документа.
- HTTP_ACCEPT_LANGUAGE — предпочтения клиента относительно языка запрашиваемой страницы.
- HTTP_USER_AGENT — информация о версии и типе операционной системы и браузера посетителя.
- HTTP_ACCEPT_ENCODING — список кодировок сжатия, которые поддерживает браузер.
- HTTP_HOST — имя сервера (в большинстве случаев совпадает с доменным именем сайта, расположенного на сервере).
- HTTP_CONNECTION — тип соединения браузера с сервером. Значение keep-alive означает, что браузер поддерживает постоянное соединение и в течение одного сеанса может делать несколько запросов.
- HTTP_COOKIE — данные о cookies сессии, сохраненные в браузере.
- HTTP_UPGRADE_INSECURE_REQUESTS — передает значение “1” для автоматического перехода небезопасных (например, HTTP: ) запросов на безопасную альтернативу (например, HTTPS: ), прежде чем браузер загрузит их.
- HTTP_CACHE_CONTROL — max-age определяет “срок годности” файла (в секундах), по истечении которого файл необходимо загружать заново.
- HTTP_REFERER — адрес источника, с которого посетитель сделал запрос или зашел на сайт.
- HTTP_DNT — значение статуса “Do Not Track”, если “1” — включен.
Ваш настоящий IP может передаваться в следующих HTTP-заголовках:
- HTTP_VIA
- HTTP_X_FORWARDED_FOR
- HTTP_PROXY_CONNECTION
- X_FORWARDED_FOR
- FORWARDED_FOR
- FORWARDED
- HTTP_FORWARDED_FOR_IP
- HTTP_FORWARDED_FOR
- FORWARDED_FOR_IP
- HTTP_X_FORWARDED
- HTTP_FORWARDED
- HTTP_CLIENT_IP, VIA, X_FORWARDED
- CLIENT_IP
HTTP-запросы в браузере — HTTP API
Проще всего увидеть использование HTTP API прямо в браузере. Для удобства разработки и тестирования браузеры включают в себя панель разработчика — с ее помощью можно полностью проанализировать страницу, происходящие внутри процессы и HTTP-запросы.
В этом уроке мы обсудим, как работать с этой панелью и узнавать полезную информацию.
Чтобы открыть панель разработчика у себя в браузере, воспользуйтесь статьей . В этом курсе мы будем пользоваться панелью браузера Chrome:
Остальные браузеры работают почти идентично, поэтому будет несложно повторять то же самое в других браузерах.
Chrome DevTools
Здесь нас интересует вкладка Network. На ней отображаются все запросы, которые выполняет браузер в процессе загрузки страницы. Также здесь показаны картинки, шрифты, файлы стилей, JavaScript и HTML самой страницы:
На каждый из загружаемых ресурсов можно нажать. Появится еще несколько вкладок с информацией, какой HTTP-запрос был отправлен и какой HTTP-ответ был получен. Здесь можно увидеть все заголовки и превью загруженного ресурса:
В этой же вкладке появляются запросы к HTTP API, которые выполняются на странице, использующей API.
Чтобы отделить запросы к HTTP API от всего остального, на вкладке Network нужно нажать кнопку Fetch/XHR. Тогда в списке загружаемых ресурсов останутся ресурсы с типом xhr. Это и есть запросы к HTTP API.
Возьмем для примера форму входа. Когда пользователь авторизуется на сайте, то сайт выполняет запрос (или несколько запросов) к API. Можете самостоятельно проверить, как это работает:
- Перейдите на сайт https://frontend-chat-ru.hexlet.app/
- Откройте панель разработчика, перейдите на вкладку Network и нажмите Fetch/XHR
- Введите данные для входа: имя admin и пароль admin
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
