HTTP-заголовки: описание, параметры, особенности и рекомендации

Современный интернет строится на общении между клиентом (браузером) и сервером. Чтобы они могли обмениваться информацией между собой, были разработаны специальные протоколы. Одним из таких является HTTP, и благодаря ему пользователи могут работать через браузер и просматривать HTML-страницы.

http заголовки

Что такое HTTP-заголовки

HTTP – это способ обмена HTML-страницами между двумя компьютерами. Протокол был изобретен в 1990 году и в настоящее время является основным методом отображения страниц с гипертексом.

HTTP-заголовки – это строки, которыми общаются компьютеры. Это напоминает диалог между людьми. Браузер при открытии сайта генерирует запрос, в нем указывается необходимая информация о себе (язык, страна, ссылка на ресурс, версия ядра и т. п.). Вся эта информация пересылается на сервер, а там стоит определенная программа (Apache, Nginx, LiteSpeed и т. п.). Она читает полученные строки и в зависимости от вопроса генерирует ответ.

Например, человек решил открыть google.com, он вводит ссылку в поисковую строку и браузер генерирует запрос. HTTP-заголовок браузера условно выглядит так:

Стартовая строка

Покажи google.com

Запрос

Я из России

Использую Google Chrome

Мне нужен HTML-код

У меня есть информация о пользователе

Тело HTTP

Ожидаю

Сервер обрабатывает данные и формирует ответ:

Стартовая строка

Все хорошо, страница найдена и работает

Ответ

Я работаю на базе Apache

Страница изменялась 27.05.2017

Кодировка UTF-8

Тело сообщения

Получай код страницы

Это новая информация от пользователя (логин, пароль)

В теле сообщения передается HTML-код страницы.

Особенности HTTPS

Сейчас большинство сайтов переходит с HTTP- на HTTPS-соединение. Отличием последнего является дополнительное шифрование всей передаваемой информации. Перед началом обмена клиент требует SSL-сертификат для провверки подлинности сервера. Для разработчика ничего не изменяются, и он может продолжать работать без изменений своего кода.

Клиент после получения сертификата проверяет его на подлинность (сравнивается сертификат от сервера и сертификат от центра). Если все хорошо, то запускается HTTP-протокол. После подтверждения сертификата заголовки шифруются через RSA. Теперь злоумышленник не сможет украсть важную информацию пользователя (логин, пароль и т. п.).

Просмотр HTTP-диалога

HTTP-диалог можно просмотреть самостоятельно. В качестве фраз используются специальные сокращения – Date, Cookie, Host, Server и т. п. Просмотреть HTTP-заголовки можно при помощи расширений для браузера. Также помогут в этом онлайн-сервисы.

Для просмотра HTTP-заголовков из плагинов используют:

  • Firebug.
  • Live HTTP Headers.
  • HTTP headers.

Из онлайн-сервисов используйте:

  • Bertal.ru.
  • stupid.su.
  • Speed-Tester.Info.

Они перехватывают получаемые от сервера заголовки и отображают их в отдельном окне. Причем с одной страницы можно получить сразу по 100–200 заголовков, и они могут периодически отправляться спустя какое-то время. Например, для проверки online в соцсетях.

HTTP-заголовки можно разделить на четыре типа:

  • общие (General headers) – применяются в запросе и ответе;
  • для запроса (Request headers) – для запроса;
  • для ответа (Response headers) – для ответов;
  • информация о сущности (Entity headers) – запросы и ответы.

Стартовая строка от клиента

Чтобы начать обмен информацией, сначала формируется главная строка. Клиент в ней говорит, какой файл или объект ему необходим. Для этого применяются определенные способы обращения к протоколу. Структура стартовой строки состоит из трех частей:

Метод запроса

Объект

протокол

POST

/c840024/upload.php

HTTP/1.1

После этого обязательно идет строка Host и указывается URL-адрес сайта. Существуют разные методы запроса. Программисты чаще всего используют:

  • GET – запрос к информации (ответ пересылается сервером в ссылке).
  • POST – отправка информации на сервер скрытым способом (ответ не виден в адресной строке).
  • HEAD – такой же, как GET, но сервер вернет только заголовок.
  • PUT – передача крупных запросов на URL;

После отправки стартовой строки следуют все остальные заголовки – User Agent, Cookie и т. п. Без первичного обращения невозможно начать обмен информацией по HTTP. Заголовки же являются лишь дополнением и в протоколе 1.0 и вовсе могут не передаваться.

http заголовок браузера

Передача информации от клиента

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

http заголовки запроса

Обязательными (передаются всегда) заголовками HTTP-запроса являются Host, Referer, User Agent и Accept.

На заголовки запроса программист повлиять не может, они формируются браузером. Настроить их передачу можно в самой программе через дополнительные расширения.

HTTP-заголовки сервера – ответ на запросы страницы

После получения запросов от клиента, страница передает определенные строки серверу. В php для передачи HTTP-заголовка используется функция header(). Например, можно сообщить о новом местоположении страницы:

header('Location: http://www.site.com/').

Со страницы на сервере к клиенту отправляются данные с необходимой информацией. Таким методом можно узнавать нужную информацию от сервера:

http заголовки сервера

Главным образом эти запросы нужны для правильного отображения страницы в браузере. Они используются для улучшения скорости загрузки страниц.

Заголовки сущности

Существуют заголовки, которые подразумевают запрос и ответ, каждый запрос привязывается к определенной сущности (страница с HTML-кодом). Благодаря этим запросам браузер уточняет информацию о странице. Они активно используются при кэшировании.

Заголовки сущности

Самым популярным заголовком сущности является Last-Modified. Этот запрос может посылаться как от браузера к серверу, так и наоборот. Через этот заголовок клиент узнает, нужно ли ему обновить свой кэш. Пример диалога:

Клиент: "У меня кэш от 16.05.2016, изменялась ли страница на сервере?"

Сервер: "Да, кэш изменялся 19.03.2017, вот новая версия."

Ответ сервера

После получения стартовой строки от клиента сервер формирует свой ответ.

HTTP

Версия протокола

Заголовок статуса

пояснение

HTTP

1.1

200

OK

Если статус соединения подтвержден, то сервер может отдать клиенту запрашиваемую информацию.

Пример http-диалога можно увидеть на картинке ниже.

просмотр http заголовков

Запросы формирует программист на странице при помощи функции header().

Коды статусов

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

Передавать статус можно со страницы как начальный заголовок, например header(«http/1.1 200 Ok»).

заголовки http срок действия

Кэшированные страницы

Чтобы ускорить процесс обмена страницами, было изобретено кэширование. Страница сохраняется в сжатом виде на локальное хранилище компьютера. Теперь в заголовках не нужно каждый раз пересылать большие файлы. Необходимо только удостовериться, что информация на хостинге и у клиента одинакова.

Созданы специальные строки запросов кэша, хостинг после получения заголовков от клиента проверяет, есть ли у него кэш для страницы. Если его нет, то он запрашивает его у сервера. В дальнейшем перед обращением к браузеру в протоколе будет только проверяется, не изменялся ли кэш на сервере.

Чтобы проверить сжатую информацию на актуальность, указывается в заголовках HTTP срок действия. Клиент отправляет информацию о том, какие файлы локально хранятся у него, а сервер указывает свою версию. Если они совпадают, то браузер просто отображает свою версию кэша.

Для SEO-оптимизации обязательно надо указывать дату в заголовках HTTP. Для этих целей используются Last-Modified. Кроме того, кэш можно обновлять спустя какое-то время хранения. Для этого используется Expires. Для настройки кэширования используется Cache-Control, благодаря ему можно разрешить или запретить сохранять информацию со страницы.

Правильная настройка кэширования позволяет быстро продвинуть свои ресурсы в топ выдачи для поисковиков. Алгоритмы Yandex и Google периодически посещают страницы сайта и сохраняют его кэш у себя в архивах. Спустя какое-то время они обращаются к серверу для проверки актуальности информации. Если информация была изменена, то происходит обновление файлов на сервере поисковика, и полученные данные проходят переиндексацию.

Некоторые советуют передавать в заголовке Last-Modified текущую дату, надеясь на то, что робот из-за этого будет постоянно держать их статью в верху выдачи поиска. Но получается, что алгоритму приходится каждый раз изменять информацию о кэше внутри себя и переиндексировать ее вновь. Это не всегда приводит к хорошим результатам и иногда может только ухудшить позиции статьи.

Об URL-ссылке в браузерной строке

Для общения с хостингом пользователь каждый раз вводит URL-ссылку в адресную строку браузера. Этот набор символов имеет определенную структуру, и через него передается необходимая информация. Структура ссылки состоит из пяти частей:

  • протокол;
  • интересуемый объект и его адрес;
  • порт для обращения;
  • HTTP-строки (при отправке методом GET);
  • query-код.

При помощи ссылок можно обращаться не только к страницам типа HTTP, PHP и т. п. Через них можно проводить поиск в базах данных или отправлять информацию на другой компьютер. Таким методом часто хакеры проводят SQL-инъекции и различными методами воруют информацию из баз данных сайта.

указывать в заголовках http дату

Недостатком URL является отсутствие поддержки других алфавитов – используется в основном латиница. Из-за этого нужно правильно продумывать сокращенное название статьи перед публикацией. Ведь поисковик по ссылке оценивает полезность ресурса и информацию, которую может предоставить страница для пользователя. Поэтому при SEO-оптимизации следует отдельное внимание уделить формированию правильных URL для статьи.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.