Можем ли мы запустить HTTP/2 без использования HTTPS?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Да, можем, но это не рекомендуется для продакшена.
HTTP/2 может работать поверх TCP как без шифрования (cleartext HTTP/2), так и в зашифрованном виде (HTTP/2 over TLS).
Основные причины, почему cleartext HTP/2 редки и не рекомендованы:
- Совместимость с браузерами: Большинство современных браузеров (Chrome, Firefox, Edge и др.) поддерживают HTTP/2 только поверх TLS. Это связано с тем, что существующая инфраструктура (промежуточные прокси, брандмауэры) может некорректно обрабатывать HTTP/2 без TLS, используя старые механизмы согласования протокола (например, Upgrade-хидер). Переход на HTTP/2 over TLS (через ALPN) более надежен.
- Безопасность: HTTP/2, как и HTTP/1.1, чувствителен к атакам типа "Man-in-the-Middle". TLS обеспечивает целостность и конфиденциальность данных.
- Стандартизация: Хотя стандарт HTTP/2 (RFC 7540) описывает оба варианта, де-факто стандартом стала реализация поверх TLS.
Технически, для запуска cleartext HTTP/2 на сервере Node.js можно использовать модули, поддерживающие эту функциональность (например, встроенный http2 с опцией allowHTTP1 или сторонние библиотеки, если требуется более низкоуровневый контроль).
Пример минимального сервера на Node.js с cleartext HTTP/2:
const http2 = require('http2');
const server = http2.createServer(); // По умолчанию создает cleartext HTTP/2 сервер
server.on('stream', (stream, headers) => {
// Обработка входящего HTTP/2 потока
stream.respond({
':status': 200,
'content-type': 'text/plain',
});
stream.end('Привет, это cleartext HTTP/2!');
});
server.listen(8080, () => {
console.log('Cleartext HTTP/2 сервер запущен на порту 8080');
});
Однако, такой сервер не будет доступен по HTTP/2 из большинства стандартных браузеров без дополнительных настроек (например, принудительного использования h2c через специальные тулы или нестандартное ПО).
В продакшене всегда следует использовать HTTP/2 поверх TLS (HTTPS) для совместимости, безопасности и надежного согласования протокола с клиентами.