🔒 HTTP и HTTPS

Запрос и ответ, методы, коды, заголовки, cookie, версии HTTP, TLS и сертификаты.

Шпаргалки · Администрирование · #http #https #tls #web

Запрос и ответ

GET /products?id=5 HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer <token>
Cookie: sid=abc
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Cache-Control: max-age=60
Set-Cookie: sid=abc; HttpOnly; Secure; SameSite=Lax

{"id": 5}

Структура: стартовая строка, заголовки, пустая строка, тело.

Методы

Метод Назначение
GET получить
POST отправить данные, создать
PUT заменить
PATCH изменить частично
DELETE удалить
HEAD только заголовки
OPTIONS разрешённые методы, CORS-проверка

Коды состояния

Группа Значение Часто встречаются
1xx информационные 101 Switching Protocols
2xx успех 200 OK, 201 Created, 204 No Content
3xx перенаправление 301 Moved Permanently, 302 Found, 304 Not Modified
4xx ошибка клиента 400, 401, 403, 404, 405, 409, 413, 422, 429
5xx ошибка сервера 500, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout

Важные заголовки

Заголовок Назначение
Host домен (обязателен в HTTP/1.1)
Content-Type, Content-Length тип и размер тела
Accept, Accept-Language, Accept-Encoding что клиент понимает
Authorization учётные данные
Cookie / Set-Cookie сессии
Cache-Control, ETag, If-None-Match кэширование
Location адрес перенаправления
User-Agent, Referer, Origin клиент и источник
Access-Control-Allow-Origin CORS
Strict-Transport-Security требовать HTTPS (HSTS)

Версии

Версия Особенность
HTTP/1.1 текстовый, keep-alive
HTTP/2 бинарный, мультиплексирование на одном соединении, сжатие заголовков
HTTP/3 поверх QUIC (UDP), быстрее при потерях и смене сети

HTTPS

HTTPS это HTTP внутри TLS: шифрование, проверка подлинности сервера и защита от подмены. Порт по умолчанию 443 (HTTP 80).

Рукопожатие (упрощённо):

  1. Клиент: поддерживаемые версии и шифры, случайное число.
  2. Сервер: сертификат и выбранный шифр.
  3. Клиент проверяет цепочку сертификатов до доверенного центра (CA).
  4. Обмен ключами (ECDHE), общий сеансовый ключ.
  5. Дальше трафик шифруется (AES-GCM, ChaCha20).

Сертификаты

Выдаёт центр сертификации (Let's Encrypt бесплатно, платные CA). Типы по проверке: DV (домен), OV (организация), EV. Wildcard *.example.com. Срок жизни ограничен (Let's Encrypt 90 дней, автопродление certbot renew).

openssl s_client -connect example.com:443 -servername example.com
curl -vI https://example.com
openssl x509 -in cert.pem -noout -dates -subject

Безопасность

HSTS, Secure и HttpOnly у cookie, TLS 1.2+ (лучше 1.3), без смешанного содержимого, Content-Security-Policy.