如何强制浏览器使用不带 TLS 的 HTTP/2 协议?

Posted

技术标签:

【中文标题】如何强制浏览器使用不带 TLS 的 HTTP/2 协议?【英文标题】:How to force browsers to use HTTP/2 protocol w/o TLS? 【发布时间】:2021-09-28 16:17:12 【问题描述】:

我有一个基于 nodejs 的网络应用程序,它使用 http2nodejs。我启动我的应用程序

HTTP/2 server is listening on port 3000. PID: 238718.

想查看应用主页:http://localhost:3000/

Chrome 浏览器出现错误:ERR_INVALID_HTTP_RESPONSE

我知道 Chrome 使用 HTTP/2 over TLS (HTTPS)。

是否有可能在浏览器中使用 HTTP/2 w/o HTTPS?

【问题讨论】:

这能回答你的问题吗? Why do web browsers not support h2c (HTTP/2 without TLS)? 【参考方案1】:

HTTP/2 是否需要加密? 否。经过广泛讨论,工作组没有就要求对新协议使用加密(例如 TLS)达成共识。

但是,一些实现声明它们仅在通过加密连接使用 HTTP/2 时才支持它,目前没有浏览器支持未加密的 HTTP/2。

来源:https://http2.github.io/faq/#does-http2-require-encryption

请注意,您可以只使用自签名证书进行本地开发

【讨论】:

以上是关于如何强制浏览器使用不带 TLS 的 HTTP/2 协议?的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 WinInet 和 MSXML 使用 TLS1.0

如何强制 JavaMailSenderImpl 使用 TLS1.2?

为啥 HTTP/2 的浏览器实现需要 TLS?

如何强制“OpenConnect”客户端使用 TLS 1.0

C#:强制 TLS1.2 但 Https 服务器仍然给出常见算法错误

如何强制 java 服务器只接受 tls 1.2 并拒绝 tls 1.0 和 tls 1.1 连接