Что такое 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.