HTTP-запросы — что это


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

Фактически запросы представляют собой некие информационные сообщения, которые клиент передаёт на сервер с целью выполнения какого-либо действия. У каждого HTTP Requests должен быть задан URL-адрес и метод, а основой выступает хедер (HTTP-заголовок).

Http запросы

HTTP-запросы наполнены несколькими текстовыми строками, которые закодированы в ASCII. Версии HTTP/1.1 и ранее предполагали использование данных в виде обычного текста. В более совершенной версии HTTP/2 текстовую информацию стали разделять на фреймы.

Структура HTTP-запросов

HTTP-запросы могут выглядеть следующим образом: GET https://www.cloud4y.ru/ HTTP/1.1

Здесь вы можете видеть, что в качестве метода используется GET, обращение идёт к ресурсу https://www.cloud4y.ru, а в качестве протокола используется версия HTTP/1.1.

Для большей наглядности изобразим это так:

Структура HTTP запроса

Традиционно запросы обладают структурой следующего вида:

  1. Стартовая строка. Необходима для описания запроса или статуса. В ней сообщается версия протокола и другие сведения. Это может быть запрашиваемый ресурс или код ответа (например, ошибки). Длина — ровно одна строчка.
  2. HTTP-заголовок. Выглядит как несколько строчек текста, в которых уточняется запрос или описывается содержимое тела сообщения.
  3. Пустая строка. Она необходима, чтобы сообщить об успешной отправке метаданных конкретного запроса.
  4. Тело запроса. В нём хранится информация о запросе или документ, который отправляется в ответе на запрос.

А теперь чуть более детально.

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

Стартовая строка HTTP-запроса включает в себя три основных компонента, метод запроса, его цель и версию протокола передачи данных.

Метод — короткое слово, которое указывает, что требуется сделать с запрашиваемым ресурсом. Чаще всего встречаются методы глагольной формы (GET, PUT или POST) или существительные (HEAD, OPTIONS). GET, например, даёт серверу понять, что пользователю требуются некие данные, а POST означает, что пользователь отправляет данные на сервер.

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

Версия используемого протокола передачи данных. Сейчас распространены версии HTTP/1.1 и HTTP/2. От протокола зависит структура данных, идущих вслед за стартовой строкой.

Отметим, что в стартовой строке могут храниться и другие полезные сведения. Например, User-Agent header — данные об используемом юзер-агенте, то есть браузере. Или Referer header — здесь подразумевается URL, с которого поступил запрос.


Аренда облачного сервера для разработки, хостинга, обученияПодробнее






HTTP-заголовок

Заголовки выглядят как пара _имя:значение_. Строка не зависит от регистра, а структура значения определяется заголовком. Хедер выглядит как одна, порой чрезвычайно длинная строка. Заголовки используются для передачи вместе с запросом дополнительных сведений и могут принадлежать к одной из четырёх категорий.

  1. Главные заголовки — необходимы для любых типов сообщений и не зависят от данных, которые планируется передавать.
  2. Заголовки запроса — задают параметры запрашиваемых данных или определяют параметры со сведениями о совершающем запрос клиенте.
  3. Заголовки ответа — в них содержится информация об ответе сервера.
  4. Заголовки сущностей — позволяют описать содержимое тела сообщения.

Пустая строка

На самом деле эта строка не пуста, она содержит параметр CTRLF, обозначающий конец заголовка.

Тело запроса

Тело HTTP-запроса может быть не у всех запросов. Например, для методов GET, HEAD, DELETE, OPTIONS тело, как правило, не нужно. А вот для методов типа POST оно необходимо — чтобы отправлять на сервер информацию для обновления, например.

Тело запроса условно делится на две категории, одноресурсное и многоресурсное. К первой категории относятся тела запроса, состоящие из одного обособленного файла с двумя заголовками: Content-Type и Content-Length.

Многоресурсные же тела состоят из нескольких частей, каждая из которых содержит свой бит информации. Эти части связаны с HTML-формами.

Помимо HTTP-запросов существуют ещё и ответы. Но это уже совсем другая история.


Полезный материал?
18
1
автор: Всеволод
опубликовано: 29.12.2022
Читайте нас: 
Последние статьи
Вверх!