HTTP-запросы


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

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

Правильно составленный HTTP-запрос содержит следующие элементы:

  • Стартовая строка
  • Ряд заголовков HTTP или полей заголовка.
  • Тело сообщения, если это необходимо.
За каждым заголовком HTTP следует строка возврата каретки (CRLF). После последнего из заголовков HTTP используется дополнительный CRLF (чтобы дать пустую строку), а затем начинается любое тело сообщения.

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

Стартовая строка - это первая строка в сообщении запроса. Она состоит как минимум из трех пунктов:

  • Метод. Метод представляет собой команду из одного слова, которая сообщает серверу, что он должен делать с ресурсом. Например, серверу может быть предложено отправить ресурс клиенту.
  • Компонент пути URL-адреса для запроса. Путь определяет ресурс на сервере.
  • Номер версии HTTP, показывающий спецификацию HTTP, которой клиент пытался привести сообщение в соответствие.
Пример стартовой строки:

GET /art.php?id=408 HTTP/1.1
В этом примере:

  • метод - GET
  • путь - /art.php?id=408
  • версия HTTP - HTTP/1.1
Стартовая строка может содержать некоторые дополнительные элементы:

  • Строка запроса. Это строка информации, которую ресурс может использовать для какой-либо цели. Параметры идут за путем, и им предшествует знак вопроса.
  • Схема и компоненты хоста URL-адреса, в дополнение к пути. Если местоположение ресурса указано таким образом, оно называется абсолютной формой URI. Для HTTP/1.1 эта форма используется, когда запрос будет проходить через прокси-сервер. Также для HTTP/1.1, если компонент хоста URL-адреса не включен в строку запроса, он должен быть включен в сообщение в заголовке хоста.
Заголовки HTTP

Заголовки HTTP записываются в сообщении, чтобы предоставить получателю информацию о сообщении, отправителе и способе, которым отправитель хочет связаться с получателем. Каждый HTTP-заголовок состоит из имени и значения. Спецификации протокола HTTP определяют стандартный набор заголовков HTTP и описывают, как их правильно использовать. HTTP-сообщения также могут включать заголовки расширений, которые не являются частью спецификаций HTTP/1.1 или HTTP/1.0.

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

Accept-Language: ru, de
If-Modified-Since: Fri, 10 Dec 2020 10:41:43 GMT
Пустая строка (то есть только CRLF) помещается в сообщение запроса после серии заголовков HTTP, чтобы отделить заголовки от тела сообщения.

Текст сообщения

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

Тела сообщений подходят для некоторых методов запроса и не подходят для других. Например, запрос с методом POST, который отправляет входные данные на сервер, имеет тело сообщения, содержащее эти данные. Запрос с помощью метода GET, который просит сервер отправить ресурс, не имеет тела сообщения.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, сети, интернет, концепции интернета, http




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Криптоджекинг (скрытый майнинг) может быть признаком более серьезного заражения
Домены, apache и https
Непрямоугольная форма на C#