Https 为什么web浏览器不支持h2c(没有TLS的HTTP/2)?

Https 为什么web浏览器不支持h2c(没有TLS的HTTP/2)?,https,http2,Https,Http2,我真的在网上搜索,我找不到为什么网络浏览器不支持h2c(没有TLS的http/2)的原因。任何想法,谢谢 稍微澄清一下 带有https的http/2使用ALPN(称为h2)。 带有http的http/2不需要ALPN(称为h2c),但几乎没有web浏览器支持它。为什么会这样 我觉得对于许多资源来说,虽然真实性总是好的,但不需要保密(http主体的数字签名没有得到广泛支持,尽管有一些私有实现)。如果不需要保密,那么h2c确实是一件好事。从技术上讲 HTTP/2之所以比HTTPS更好、更容易处理,有

我真的在网上搜索,我找不到为什么网络浏览器不支持h2c(没有TLS的http/2)的原因。任何想法,谢谢

稍微澄清一下 带有https的http/2使用ALPN(称为h2)。 带有http的http/2不需要ALPN(称为h2c),但几乎没有web浏览器支持它。为什么会这样

我觉得对于许多资源来说,虽然真实性总是好的,但不需要保密(http主体的数字签名没有得到广泛支持,尽管有一些私有实现)。如果不需要保密,那么h2c确实是一件好事。

从技术上讲 HTTP/2之所以比HTTPS更好、更容易处理,有几个技术原因:

  • 使用ALPN在TLS中进行HTTP/2协商要容易得多,而且不会像普通HTTP中的
    Upgrade:
    那样丢失往返。而且它也不会像纯文本HTTP/2那样在POST上遇到升级问题
  • N%的网站不支持请求中的主动升级:h2c标题,而是响应400个错误
  • 通过TCP端口80执行HTTP/1.1以外的操作在Y%的情况下会中断,因为世界上到处都是“帮助”并在流中为此类连接替换/添加内容的中间框。如果那不是HTTP/1.1,事情就会破裂(这也是为什么brotli也需要HTTPS的原因)
  • 思想上 一些较大的web浏览器开发团队正在推动在web上使用更多的HTTPS,并在一定程度上进行了共享和工作。这使得它被认为是一个奖金,如果功能只实现HTTPS,因为它们是网站和服务转向HTTPS的另一个动机。因此,一些团队从未非常努力(如果有的话)让HTTP/2在没有TLS的情况下工作

    实际上
    至少有一家浏览器供应商在早期表示打算通过纯文本HTTP(h2c)实现并为用户提供HTTP/2。由于上面提到的技术障碍,他们最终没有这样做。

    Dupe——但新答案更长。伙计,我甚至记不起自己的答案了!好的,但是本地网络呢?我有一个路由器,想打开它的管理面板,这样路由器就不能有任何有效的TLS证书,除了我的浏览器将拒绝的自签名证书。@stokito即使在本地网络上,浏览器也不知道请求是否通过破坏新功能的旧代理。WebSocket和brotli压缩也从TLS中受益,原因与从中间服务器隐藏类似。事实上,浏览器在没有TLS的情况下也不会请求brotli压缩(正如Daniel在回答中提到的)。将TLS视为防止无能和恶意行为的隐私。@stokito您仍然可以在路由器上放置真正的证书。只需在您的客户端pc中为本地pc上的router.example.com之类的内容设置一个hosts文件条目,然后获取该名称的LetsEncrypt或类似证书。如果您获得了*.example.com这样的通配符证书,您甚至不必向公众公开路由器名称。