Middle
77
questionbank

Можем ли мы запустить HTTP/2 без использования HTTPS?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Да, можем, но это не рекомендуется для продакшена.

HTTP/2 может работать поверх TCP как без шифрования (cleartext HTTP/2), так и в зашифрованном виде (HTTP/2 over TLS).

Основные причины, почему cleartext HTP/2 редки и не рекомендованы:

  1. Совместимость с браузерами: Большинство современных браузеров (Chrome, Firefox, Edge и др.) поддерживают HTTP/2 только поверх TLS. Это связано с тем, что существующая инфраструктура (промежуточные прокси, брандмауэры) может некорректно обрабатывать HTTP/2 без TLS, используя старые механизмы согласования протокола (например, Upgrade-хидер). Переход на HTTP/2 over TLS (через ALPN) более надежен.
  2. Безопасность: HTTP/2, как и HTTP/1.1, чувствителен к атакам типа "Man-in-the-Middle". TLS обеспечивает целостность и конфиденциальность данных.
  3. Стандартизация: Хотя стандарт HTTP/2 (RFC 7540) описывает оба варианта, де-факто стандартом стала реализация поверх TLS.

Технически, для запуска cleartext HTTP/2 на сервере Node.js можно использовать модули, поддерживающие эту функциональность (например, встроенный http2 с опцией allowHTTP1 или сторонние библиотеки, если требуется более низкоуровневый контроль).

Пример минимального сервера на Node.js с cleartext HTTP/2:

javascript

Однако, такой сервер не будет доступен по HTTP/2 из большинства стандартных браузеров без дополнительных настроек (например, принудительного использования h2c через специальные тулы или нестандартное ПО).

В продакшене всегда следует использовать HTTP/2 поверх TLS (HTTPS) для совместимости, безопасности и надежного согласования протокола с клиентами.