← Назад к вопросам
Из чего состоит http протокол
1.0 Junior🔥 211 комментариев
#Браузер и сетевые технологии
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Структура HTTP протокола
HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня, который строится на основе TCP/IP и предназначен для передачи данных между клиентом и сервером. HTTP имеет четко определённую структуру, которая состоит из нескольких основных компонентов.
Основные компоненты HTTP
1. Запрос (HTTP Request)
Каждый HTTP запрос состоит из трёх основных частей:
METHOD /path/to/resource HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Content-Type: application/json
Content-Length: 27
{"key": "value", "name": "John"}
- Строка запроса (Request Line) — содержит метод (GET, POST, PUT, DELETE и т.д.), путь к ресурсу и версию протокола
- Заголовки (Headers) — передают метаинформацию (User-Agent, Content-Type, Cookie и др.)
- Пустая строка — разделяет заголовки и тело
- Тело (Body) — опционально, содержит данные (при POST, PUT запросах)
2. Ответ (HTTP Response)
Сервер отправляет ответ в следующем формате:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 44
Set-Cookie: sessionId=abc123; Path=/
{"status": "success", "data": {"id": 1, "name": "John"}}
- Строка состояния (Status Line) — версия HTTP, код состояния (200, 404, 500 и т.д.) и описание
- Заголовки ответа (Response Headers) — информация о ответе (Content-Type, Set-Cookie и др.)
- Пустая строка — разделитель
- Тело ответа (Response Body) — содержит запрошенный ресурс (HTML, JSON, файл и т.д.)
Коды состояния
Коды группируются в пять категорий:
- 1xx (Informational) — информационные (100 Continue)
- 2xx (Success) — успех (200 OK, 201 Created, 204 No Content)
- 3xx (Redirection) — перенаправление (301 Moved Permanently, 304 Not Modified)
- 4xx (Client Error) — ошибка клиента (400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found)
- 5xx (Server Error) — ошибка сервера (500 Internal Server Error, 502 Bad Gateway)
Методы HTTP
// GET — получить ресурс (безопасный, идемпотентный)
fetch("https://api.example.com/users/1", { method: "GET" })
// POST — создать новый ресурс
fetch("https://api.example.com/users", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "John", email: "john@example.com" })
})
// PUT — полностью заменить ресурс
fetch("https://api.example.com/users/1", {
method: "PUT",
body: JSON.stringify({ name: "Jane", email: "jane@example.com" })
})
// PATCH — частично изменить ресурс
fetch("https://api.example.com/users/1", {
method: "PATCH",
body: JSON.stringify({ name: "Jane" })
})
// DELETE — удалить ресурс
fetch("https://api.example.com/users/1", { method: "DELETE" })
Важные заголовки
- Content-Type — тип содержимого (application/json, text/html, image/png)
- Content-Length — размер тела в байтах
- Authorization — учётные данные (Bearer token, Basic auth)
- Cookie — отправляет cookies на сервер
- Set-Cookie — сервер устанавливает cookies у клиента
- Cache-Control — инструкции кеширования
- CORS (Access-Control-*) — кросс-доменные запросы
HTTP/2 и HTTP/3
Хотя базовая структура остаётся похожей, более новые версии оптимизируют передачу:
- HTTP/2 — бинарный формат, мультиплексирование, push
- HTTP/3 — использует QUIC вместо TCP, меньше задержек
Пример полного цикла
// Запрос
fetch("https://jsonplaceholder.typicode.com/posts/1")
.then(response => {
console.log(response.status); // 200
console.log(response.headers.get("Content-Type")); // application/json
return response.json();
})
.then(data => console.log(data))
.catch(error => console.error(error));
Таким образом, HTTP — это простой текстовый протокол, построенный на парадигме запрос-ответ, где каждый запрос содержит метод, путь и заголовки, а ответ — код состояния, заголовки и тело. Эта структура остаётся неизменной вот уже почти 30 лет и является основой всего современного веба.