HTTP/HTTPS: методы, статусы, заголовки, HTTP/2 и HTTP/3

↑ 1.1 Как работает веб и браузер · ← Предыдущая · → Следующая

Желательно~3 мин чтенияУровень: junior

Зачем это на собесе

HTTP — язык общения фронта и бэка; вопросы про методы, идемпотентность, коды и кэширование задают всем.

Объяснение

Запрос: метод + URL + заголовки + тело. Ответ: код статуса + заголовки + тело.

МетодНазначениеИдемпотентенБезопасен
GETполучитьдада
POSTсоздать/выполнить действиенетнет
PUTзаменитьданет
PATCHизменить частьнет (обычно)нет
DELETEудалитьданет
OPTIONSчто разрешено (CORS preflight)дада
Классы кодовПримеры
2xx200 OK, 201 Created, 204 No Content
3xx301/308 постоянный, 302/307 временный, 304 Not Modified
4xx400, 401 (не аутентифицирован), 403 (нет прав), 404, 409, 422, 429
5xx500, 502, 503, 504

Важные заголовки: Content-Type, Accept, Authorization, Cache-Control, ETag/If-None-Match, Set-Cookie/Cookie, Origin, Content-Security-Policy, Location.

Версии протокола:

ВерсияОсобенности
HTTP/1.1текстовый, keep-alive, до ~6 соединений на домен, head-of-line blocking
HTTP/2бинарный, мультиплексирование, сжатие заголовков (HPACK), server push (почти не используется)
HTTP/3QUIC поверх UDP, нет HOL-blocking транспорта, быстрая установка

HTTPS = HTTP поверх TLS: шифрование, целостность, аутентификация сервера.

const res = await fetch("/api/orders", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(order) });
if (!res.ok) throw new Error(`HTTP ${res.status}`);   // fetch не бросает исключение на 4xx/5xx

Нюансы и подводные камни

  • fetch отклоняется только при сетевой ошибке; статусы 4xx/5xx нужно проверять вручную.
  • 401 и 403 путают: 401 — «кто вы?», 403 — «вам нельзя».
  • Кэширование GET-запросов: не кладите чувствительные данные в URL.
  • При HTTP/2 «спрайты» и склейка файлов уже не нужны в прежнем виде.
  • 301 кэшируется браузером надолго.

Практика

  1. Посмотрите заголовки запроса и ответа для 3 сайтов в DevTools.
  2. Отправьте POST через fetch и обработайте 400/500.
  3. Проверьте условный запрос с ETag: 304 в Network.

Вопросы с ответами

Связанные темы