Что такое HTTP?

«Что такое HTTP?» — вопрос из категории Сети, который задают на 28% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня, который определяет формат обмена данными между клиентом (например, веб-браузером) и сервером. Он является фундаментальной технологией для Всемирной паутины (WWW).

Основные принципы работы:

  1. Клиент-серверная модель: Клиент отправляет HTTP-запрос, сервер обрабатывает его и возвращает HTTP-ответ.
  2. Stateless (Без состояния): По умолчанию каждый запрос обрабатывается независимо. Сервер не хранит информацию о предыдущих запросах от того же клиента. Состояние сессии реализуется поверх HTTP (с помощью кук, токенов).
  3. Текстовый формат (для HTTP/1.1): Заголовки и метаданные передаются в виде читаемого текста.

Структура HTTP-запроса:

GET /api/users/123 HTTP/1.1          // Метод, путь, версия протокола
Host: api.example.com                // Обязательный заголовок Host
User-Agent: Mozilla/5.0
Accept: application/json             // Клиент ожидает JSON в ответ
Authorization: Bearer <token>        // Заголовок для аутентификации

// Тело запроса (для методов POST, PUT, PATCH)

Структура HTTP-ответа:

HTTP/1.1 200 OK                      // Версия протокола, код и статус
Content-Type: application/json       // Тип содержимого тела ответа
Content-Length: 85                   // Длина тела в байтах
Date: Mon, 27 Mar 2023 10:00:00 GMT

{"id": 123, "name": "John Doe"}    // Тело ответа (JSON)

Ключевые элементы:

  • Методы (HTTP Verbs): Определяют действие над ресурсом.
    • GET — получение данных.
    • POST — создание нового ресурса или отправка данных для обработки.
    • PUT — полное обновление ресурса.
    • PATCH — частичное обновление ресурса.
    • DELETE — удаление ресурса.
  • Коды состояния (Status Codes):
    • 2xx — Успех (200 OK, 201 Created).
    • 3xx — Перенаправление (301 Moved Permanently).
    • 4xx — Ошибка клиента (404 Not Found, 400 Bad Request).
    • 5xx — Ошибка сервера (500 Internal Server Error).
  • Заголовки (Headers): Служат для передачи метаданных (аутентификация, кеширование, тип контента, сжатие).

HTTPS — это HTTP поверх защищённого транспортного уровня TLS/SSL, обеспечивающий шифрование и аутентификацию, что критически важно для защиты данных.

Видео-ответы