ProximaMPProximaMP

Что такое HTTP: как браузер общается с сервером

HTTP — язык, на котором браузер разговаривает с сервером. Каждый раз, когда открывается страница, отправляется форма или подгружается картинка, происходит HTTP-запрос. Разберём, что такое HTTP простыми словами: как устроен обмен, что значат знакомые «404» и «GET» и почему сегодня чистый HTTP почти не встречается.

Запрос и ответ

HTTP устроен предельно просто: клиент спрашивает — сервер отвечает. Никакой инициативы у сервера нет, сам он ничего не присылает.

Запрос состоит из метода, адреса и заголовков:

GET /wiki/chto-takoe-http HTTP/1.1
Host: proximamp.com
Accept-Language: ru

Ответ — из кода состояния, заголовков и тела (самой страницы):

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8

<!doctype html>…

Одна страница — это обычно не один запрос, а десятки: сам HTML, потом стили, скрипты, шрифты, картинки. Каждый элемент запрашивается отдельно.

Методы

Метод говорит, что именно ты хочешь сделать с ресурсом:

МетодЧто означает
GETОтдай мне это — открытие страницы, загрузка картинки
POSTПрими данные — отправка формы, создание записи
PUT / PATCHЗамени / измени существующее
DELETEУдали
HEADОтдай только заголовки, без тела

GET и HEAD считаются безопасными: они ничего не меняют. Остальные меняют состояние на сервере — поэтому браузер и переспрашивает при обновлении страницы, полученной через POST.

Коды состояния

Три цифры в начале ответа. Первая задаёт класс:

КлассСмыслЗнакомые примеры
2xxУспех200 OK, 201 Created
3xxПеренаправление301 навсегда, 302 временно, 304 не изменилось
4xxОшибка клиента404 не найдено, 403 запрещено, 401 нужна авторизация
5xxОшибка сервера500 внутренняя ошибка, 502 плохой шлюз, 504 таймаут

Правило простое: 4xx — вопрос к тому, кто спрашивал, 5xx — к тому, кто отвечал.

На чём работает HTTP

HTTP — протокол прикладного уровня: он описывает, что передаётся, а доставкой занимается слой ниже. Обычно это TCP — страница должна дойти целиком и по порядку. Исключение — HTTP/3, который работает поверх UDP через QUIC.

Стандартные порты:

  • 80 — HTTP;
  • 443 — HTTPS;
  • 3000, 5173, 8000, 8080 — типичные порты локальных дев-серверов.

Порт в адресе можно не писать, если он стандартный: http://example.com и http://example.com:80 — одно и то же.

HTTP не помнит тебя

Каждый запрос независим: сервер по умолчанию не знает, что минуту назад ты уже заходил. Чтобы связать запросы в сессию, придумали куки, токены и заголовок Authorization — всё это надстройки поверх протокола, который сам по себе ничего не запоминает.

Почему чистого HTTP почти не осталось

Обычный HTTP передаёт всё открытым текстом. Любой на пути — провайдер, владелец публичного Wi-Fi — видит адреса страниц, содержимое форм и куки, а при желании может подменить ответ.

Поэтому браузеры перешли на HTTPS: помечают HTTP-страницы как «Не защищено», запрещают на них камеру, геолокацию и Service Worker, а поисковики учитывают HTTPS в ранжировании. Сегодня HTTP без шифрования остался разве что внутри локальной машины — и то до первого выхода наружу.

Что именно добавляет HTTPS — в статье Что такое HTTPS.

Частые вопросы

HTTP и HTML — это одно и то же? Нет. HTML — язык разметки самой страницы, HTTP — способ её доставить.

Что такое заголовки? Служебные строки с подробностями запроса или ответа: тип содержимого, язык, куки, правила кеширования.

Зачем порт 8080? Это просто «альтернативный HTTP»: порты ниже 1024 требуют особых прав, поэтому в разработке берут номера повыше.

HTTP/2 и HTTP/3 — это другие протоколы? Те же методы и коды, другой способ передачи: меньше задержек, несколько запросов в одном соединении.

Показать локальный сайт по HTTPS

Твой дев-сервер отдаёт обычный HTTP на localhost. Наружу его можно вывести сразу по HTTPS, с валидным сертификатом и без правок в приложении — как это делается, в гайде Как открыть localhost в интернет по HTTPS.

Скачать ProximaClient для Windows →

Все статьи