🌐 Что такое HTTP?
HTTP (HyperText Transfer Protocol) - это основной протокол для передачи данных в интернете. В предыдущих статьях мы узнали о DNS и доменах, теперь рассмотрим, как происходит обмен информацией между клиентом и сервером.
Краткая история
- 1989: Тим Бернерс-Ли разрабатывает HTTP
- 1996: HTTP/1.0 - первый стандартизированный протокол
- 1999: HTTP/1.1 - улучшения производительности
- 2015: HTTP/2 - параллельные запросы, сжатие заголовков
- 2022: HTTP/3 - использование QUIC вместо TCP
📝 Принцип работы HTTP
HTTP работает по модели “запрос-ответ”:
- Клиент (браузер) отправляет запрос на сервер
- Сервер обрабатывает запрос
- Сервер отправляет ответ клиенту
- Браузер отображает полученный результат
Пример HTTP-запроса
| |
Пример HTTP-ответа
| |
🔄 HTTP-методы
HTTP определяет различные типы запросов:
- GET - получение ресурса (самый распространенный)
- POST - отправка данных для обработки
- PUT - загрузка ресурса на сервер
- DELETE - удаление ресурса
- HEAD - получение только заголовков
- OPTIONS - определение возможностей сервера
- PATCH - частичное изменение ресурса
🔢 HTTP статус-коды
Серверы сообщают о результате запроса с помощью статус-кодов:
Информационные (1xx)
- 100 Continue - продолжение запроса
Успешные (2xx)
- 200 OK - запрос выполнен успешно
- 201 Created - ресурс успешно создан
- 204 No Content - запрос выполнен, но нет содержимого
Перенаправления (3xx)
- 301 Moved Permanently - ресурс перемещен навсегда
- 302 Found - временное перенаправление
- 304 Not Modified - ресурс не изменился с прошлого запроса
Клиентские ошибки (4xx)
- 400 Bad Request - некорректный запрос
- 401 Unauthorized - требуется аутентификация
- 403 Forbidden - доступ запрещен
- 404 Not Found - ресурс не найден
Серверные ошибки (5xx)
- 500 Internal Server Error - внутренняя ошибка сервера
- 502 Bad Gateway - ошибка шлюза
- 503 Service Unavailable - сервис недоступен
📋 HTTP-заголовки
Заголовки предоставляют дополнительную информацию о запросе или ответе:
Заголовки запросов
User-Agent- информация о браузере/клиентеCookie- данные для идентификации пользователяAccept- типы контента, которые может принять клиентAuthorization- данные для аутентификации
Заголовки ответов
Content-Type- тип передаваемого контентаSet-Cookie- установка cookieCache-Control- настройки кешированияContent-Length- размер тела ответа
🔐 HTTP и безопасность
Стандартный HTTP имеет проблемы с безопасностью:
- Передача данных в открытом виде
- Уязвимость к перехвату
- Отсутствие проверки подлинности сервера
Для решения этих проблем используется HTTPS (HTTP Secure) с SSL/TLS шифрованием. Подробнее об этом в следующей статье.
👨💻 Как проверить HTTP?
Инструменты для работы с HTTP:
- Browser DevTools (F12 в большинстве браузеров)
- curl - консольная утилита для отправки HTTP-запросов
- Postman - графический клиент для тестирования API
- Wireshark - анализатор сетевого трафика
