HTTP
Оригинальное название: Hypertext Transfer Protocol (HTTP)
Коротко
Протокол, по которому браузер и другие клиенты запрашивают у сервера страницы, файлы и данные, а сервер отвечает содержимым и кодом статуса.
Что такое «HTTP»
HTTP — язык общения в вебе. Каждый раз, когда браузер открывает страницу, он отправляет серверу текстовый запрос: какой адрес нужен, каким методом и с какими заголовками. Сервер отвечает статусом, заголовками и телом — HTML, картинкой или JSON. Одна страница порождает десятки таких обменов: сам документ, стили, скрипты, шрифты, изображения.
Протокол не хранит состояние между запросами. Чтобы сервер узнавал посетителя, поверх HTTP используют cookie и токены. Шифрование добавляет HTTPS: тот же HTTP, но внутри TLS-соединения.
Как выглядит обмен
GET /catalog/chairs/ HTTP/1.1
Host: example.ru
Accept: text/html
Accept-Encoding: gzip, br
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: max-age=600
Content-Encoding: br
Запрос сообщает метод и путь, обязательный заголовок Host и какие форматы и сжатие поддерживает клиент. Ответ сообщает код, тип содержимого и правила кеширования. Заголовки ответа сайта удобно посмотреть командой curl -I https://example.ru/. Действия GET, POST и другие разобраны в статье про методы HTTP.
Коды состояния
- 2xx — успех:
200 OK,201 Created. - 3xx — перенаправление:
301постоянное,302временное,304«не изменилось, берите из кеша». - 4xx — ошибка клиента:
404нет страницы,403доступ запрещён,429слишком много запросов. - 5xx — ошибка сервера:
500сбой приложения,502и504проблемы между веб-сервером и PHP.
Что означают серверные коды для владельца сайта и что делать в первую очередь, описано в статье об ошибках 500, 502 и 503.
Версии протокола
HTTP/1.1 передаёт запросы по одному в каждом соединении, поэтому браузеры открывают несколько соединений параллельно. HTTP/2 мультиплексирует много запросов в одном соединении и сжимает заголовки. HTTP/3 работает поверх QUIC на базе UDP и быстрее восстанавливается при потерях пакетов, что заметно на мобильных сетях. Смысл запросов, методы и коды при этом не меняются — меняется способ доставки.

