Заголовок HTTP — обзор для пользователей Интернета

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

Функция заголовка, пояснение на примере

Когда открывается веб-сайт www.example.com, веб-сервер не только открывает сам сайт, но и посылает — незаметно для пользователей — следующий заголовок:

Отдельные строки называются «полями заголовка». Каждая из них (кроме первой) состоит из пары имя/значение, разделенных двоеточием.

Ключ к отдельным символам:

  • HTTP/1.1 — действительная версия протокола HTTP.
  • 200 OK — это статусный код. Он означает, что сервер получил, понял и принял запрос.
  • Content-Encoding и Content-Type говорят нам о типе файла.
  • Age, Cache-Control, Expires, Vary и X-Cache говорят о кэшировании файла.
  • Etag и Last-Modified используются для контроля версии доставленного файла.
  • Server относится к программному обеспечению веб-сервера.
  • Content-Length — это размер файла в байтах.

Как вы видите, эта информация заголовка в основном используется для координации между клиентом (браузером) и сервером. Убеждаются, что клиент может понять форму файла, что файл достаточно актуален и что размер файла соответствует ожиданиям браузера.

Показанные в примере строки заголовков — это лишь малая часть доступных полей заголовков. Всего существует почти 100 полей заголовков HTTP, из которых около 30 предназначены для указания HTTP-запросов, около 30 — для ответа сервера, а также целый ряд других полей заголовков, которые служат различным целям и частично (до сих пор) не стандартизированы.

В следующем обзоре описаны наиболее важные поля заголовков.

HTTP-запрос (запрос клиента)

Поле заголовка Значение Пример
Принимать Какие типы содержимого может обрабатывать клиент; если поле пустое, то это все типы содержимого. Accept: text/html, application/xml
Accept-Charset Какие наборы символов может отображать клиент. Accept-Charset: utf-8
Accept-Encoding Какие сжатые форматы поддерживает клиент. Accept-Encoding: gzip
Accept-Language Запрашиваемая языковая версия Accept-Language: en-US
Авторизация Данные аутентификации (например, для входа в систему) Основной WjbU7D25zTAlV2tZ7==
Cache-Control Параметры механизма кэширования Cache-Control: no-cache
Cookie Cookie, сохраненные для данного сервера Cookie: $Version=1; Content=23
Content-Length Длина тела запроса Content-Length: 212
Content-Type MIME-тип тела запроса; имеет значение для POST и PUT запросов Content-Type: application/x_222-form-urlencoded
Дата Дата и время запроса Дата: Mon, 9 March 2020 09:02:22 GMT
Ожидание Посылает серверу ожидание, обычно получение большого запроса. Expect: 100-continue (сервер должен отправить код 100, когда он будет готов принять запрос)
Хост Доменное имя сервера Host: example.com
If-Match Условное выполнение действия в зависимости от совпадения переданного кода If-Match: «ft678iujhnjio90’pöl»
If-Modified-Since Отправка только в том случае, если запрашиваемое содержимое было изменено с указанного времени IF-Modified-Since: Mon 2 Mar 2020 1:00:00 GMT
If-None-Match Как указано выше, но задается через ETag (тег сущности, см. ниже) If-None-Match: «cxdrt5678iujhgbvb».
If-Range Запрашивает только ту часть содержимого, которая была изменена или отсутствует в кэше клиента If-Range: Mon 2 Mar 2020 1:00:00 GMT
If-Unmodified-Since Аналог IF-Modified-Since If-Modified-Since: Mon 2 Mar 2020 1:00:00 GMT
Max-Forwards Определяет максимальное количество раз, когда ответ сервера может быть перенаправлен. Max-Forwards: 12
Proxy-Authorization Используется для аутентификации клиента на прокси-сервере Прокси-авторизация: Базовая WjbU7D25zTAlV2tZ7==
Диапазон Определяет часть запрашиваемого содержимого Диапазон: байты=0-9999
Referrer URL ресурса, с которого пришел запрос (т.е. с которого была сделана ссылка) Ссылочный ресурс: https://example.com/index.html
TE Принятое расширение кодирования передачи данных TE: gzip, deflate
User-Agent User-Agent клиента (проще говоря: браузера) Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/80.0.3987.132 Safari/537.36

Наиболее важные заголовки запроса и ответа HTTP: Обзор

HTTP-Response (ответ сервера)

Поле заголовка Значение Пример
Accept-Ranges Какие единицы сервер принимает для спецификаций диапазона (см. выше) Accept-Ranges: bytes
Age Количество секунд, в течение которых объект находился в кэше. Возраст: 2300
Разрешить Разрешенные типы запросов для определенного ресурса Разрешить: GET, POST, HEAD
Cache-Control Может ли объект храниться в кэше и как долго. Cache-Control: max-age=4800
Соединение Предпочтительный тип соединения Соединение: закрыто
Content-Encoding Тип сжатия Content-Encoding: deflate
Content-Language Язык ресурса Content-Language: en-US
Content-Length Размер тела в байтах Content-Length: 135674
Content-Location Местоположение файла, если он получен не из запрашиваемого места (например, из CDN). Content-Location: /example.com
Content-Security-Policy Концепции безопасности сервера Content-Security-Policy: frame-src ‘none’; object-src ‘none’
Content-Type MIME-тип запрашиваемого файла Content-Type: text/tml; charset=utf-8
Дата Время ответа Дата: Mon 2 Mar 2020 1:00:00 GMT
ETag Отмечает конкретную версию файла ETag: «vt6789oi8uztgfvbn».
Expires Когда файл следует считать устаревшим Expires: Tue 3 Mar 2020 1:00:00 GMT
Last-Modified Время последней модификации файла Last-Modified: Mon 2 Mar 2020 1:00:00 GMT
Местоположение Идентифицирует местоположение, на которое был перенаправлен запрос Местоположение: https://www.example.com
Proxy-Authenticate Определяет, должен ли клиент аутентифицироваться на прокси и если да, то каким образом. Proxy-Authenticate: Базовый
Retry-After Устанавливает, с какого момента клиент должен повторить запрос, если ресурс временно недоступен (дата или секунды). Retry-After: 300
Сервер Идентификация сервера Сервер: Apache
Set-Cookie Устанавливает cookie на клиенте Set-Cookie: UserID=XY; Max-Age=3800; Version=1
Transfer-Encoding Метод сжатия Transfer-Encoding: gpzip
Vary Устанавливает, какие поля заголовка должны считаться изменяемыми, если файл запрашивается из кэша. Vary: User-Agent (= сервер хранит разные версии файлов в зависимости от агента пользователя).
Via Через какие прокси-серверы был отправлен ответ. Via: 1.1www.example.com
Совет

Вы можете легко прочитать заголовки ответов любого веб-сайта с помощью анализатора HTTP-заголовков расширения Chrome.

Оцените статью
cdelat.ru
Добавить комментарий