🔒 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).
Рукопожатие (упрощённо):
- Клиент: поддерживаемые версии и шифры, случайное число.
- Сервер: сертификат и выбранный шифр.
- Клиент проверяет цепочку сертификатов до доверенного центра (CA).
- Обмен ключами (ECDHE), общий сеансовый ключ.
- Дальше трафик шифруется (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.