HTTP был разработан в 1990-х годах для создания первого интерактивного текстового веб-браузера. За эти годы протокол менялся и совершенствовался, становился более гибким и постепенно превратился в современный интернет. В статье рассмотрим принцип работы протокола и что важно знать о нём разработчику.
Принцип работы
Аббревиатура HTTP расшифровывается как HyperText Transfer Protocol — протокол передачи гипертекста. Узнаем принципы работы на версии протокола — HTTP 1.1, её спецификация — RFC 2616.
В своей работе протокол использует клиент-серверную структуру передачи данных.
Как это работает?
Пользователь открывает приложение и формирует свой запрос, затем браузер посылает его на сервер. Запрос обрабатывается на сервере, где формируется ответ и отправляется пользователю. Дальше клиент может отправлять новые запросы, которые буду аналогично обработаны.
HTTP обеспечивает работу интернета. С его помощью решается важная задача — обмен данными между веб-браузером и веб-сервером. Помимо этого, протокол используют в качестве «транспорта» для передачи информации другим протоколам, например, таким как SOAP, XML-RPC и WebDAV.
👉🏼 Основные составляющие HTTP:
- 
тело запроса и тело ответа;
 - 
заголовки запроса и ответа;
 - 
метод запроса;
 - 
URL и параметра запроса;
 - 
код ответа.
 
Структура запроса
HTTP-запрос состоит из метода, адреса (URI) и версии протокола. Например, запрос может быть таким:
GET /index.html HTTP/1.1
Метод передаёт информацию серверу о том, что пользователь хочет получить или сделать. Например, запрос, начинающийся с GET, означает, что клиент хочет получить информацию (get, англ. — получать).
Самые распространённые HTTP-методы
👉🏼 GET — получение информации с сервера. 
В качестве информации выступает всё, что есть на сервере, например, видео, изображения, шрифты, CSS-файл, HTML-разметка или JSON-данные и многое другое.
POST — создание новой записи на сервере.
Один из немногих запросов к серверу, который обязательно должен содержать тело.
PUT — перезапись существующей информации на сервере.
Например, вы написали пост, а потом решили его полностью изменить. Для этого нужно подготовить актуальный текст и сделать запрос PUT с новым постом, который полностью заменит предыдущий.
DELETE — удаление существующей информации на сервере.
HTTP-запросы и ответы состоят из заголовков и тела сообщения.
Заголовки дают браузеру дополнительные сведения и помогают ему отображать контент.
Пример общего заголовка для большинства запросов:
Content-Type: text/html; charset=UTF-8
Content-Length: 208
Первый заголовок, Content-Type, говорит браузеру, какой тип документа он отправляет обратно. Самый распространённый тип — text/html, потому что все веб-страницы являются текстовыми файлами HTML. Также часто встречаются такие типы, как image/png — изображения, video/mpeg — видео, script/javascript — скрипт и другие.
Заголовок Content-length информирует о длине документа в байтах, что помогает браузеру рассчитать время загрузки файла.
HTTP-ответ содержит фактический запрошенный документ. Например, страница представляет собой простой HTML-файл:
<!DOCTYPE html>
<html lang="ru">
  <head>
    <title>Курсы HTML Academy</title>
  </head>
  <body>
    <h1>HTML Academy</h1>
    <p>интерактивные онлайн-курсы</p>
  </body>
</html>
Ответ HTTP также содержит статусный код, который показывает успешность выполнения запроса. Например, 200 OK означает успешное выполнение запроса, в то время как 404 Not Found означает, что запрошенный ресурс не найден.
Адрес URL
Чтобы посетить интернет-ресурсы, пользователь использует приложение браузера. Клиент вводит в браузере URL — Uniform Resource Locator или «Унифицированный Указатель Ресурса». Все URL, которые начинаются с http, дают сигнал браузеру, что необходимо использовать HTTP.
Код ответа
Код ответа или код состояния HTTP — это цифровой код, который возвращается HTTP-сервером и обозначает выполнение или невыполнение запроса клиента.
Спецификация HTTP 1.1 определяет 40 различных кодов. Каждый код состояния отмечен числовым идентификатором в диапазоне от 100 до 599.
Основные коды ответа:
2xx— запрос успешно выполнен, например, 200 OK.3xx— перенаправление, то есть для выполнения запроса необходимы дополнительные действия, например, 301 Moved Permanently.4xx— ошибка, связанная с запросом клиента, например, 404 Not Found.5xx— ошибка, связанная с сервером, например, 500 Internal Server Error.
Код ответа — это важный способ передачи сообщений между клиентом и сервером в рамках протокола HTTP. Полный список кодов можно найти здесь: «Все HTTP-статусы».
Что важно для разработчика
Понимание работы протокола HTTP поможет разобраться с тем, как в целом работает интернет и передача данных.
Фронтендеры работают с данными, которые передаются разными протоколами. Важно понимать, как всё устроено, чтобы уметь решать типовые задачи.
✅ Обязательно знать:
- 
Основные методы HTTP: GET, POST, PUT, DELETE.
 - 
Формат запросов и ответов.
 - 
Статусы HTTP-кодов — 200 OK, 404 Not Found, 500 Internal Server Error и другие.
 - 
Особенности работы с безопасными соединениями HTTPS.
 
HTTP используется в различных технологиях и языках программирования. Его применяют в веб-разработке для отправки запросов к серверу и получения данных. Также протокол участвует в работе с REST API — для отправки запросов на получение или изменения данных с сервера.
Как ещё разработчик применяет HTTP:
- Использование HTTP-библиотек: многие языки программирования, например, Java, JavaScript и другие, имеют библиотеки, которые позволяют легко отправлять HTTP-запросы и обрабатывать ответы.
 - Использование API: многие сайты и службы предоставляют API, которые позволяют получать данные из их систем через HTTP-запросы.
 
Прокачать свои знания о протоколах можно на курсе «Протоколы и сети: основы».