我真的在网上搜索,我找不到网络浏览器不支持h2c(没有TLS的http/2)的原因。任何想法,赞赏。
一点澄清
带有 https 的 http/2 使用 ALPN(这称为 h2)。
http/2 和 http 不需要 ALPN(这称为 h2c),但几乎没有 Web 浏览器支持它。为什么会这样?
我觉得对于许多资源来说,虽然真实性总是好的,但不需要保密(尽管有一些私有(private)实现,但 http 正文的数字签名并未得到广泛支持)。鉴于不需要保密,那么拥有 h2c 确实是一件好事。
请您参考如下方法:
技术上
HTTP/2 比 HTTPS 更好、更容易处理的技术原因有以下几个:
Upgrade:
这样的往返行程。在普通的 HTTP 中。并且它不会受到使用纯文本 HTTP/2 获得的 POST 升级问题的影响。 Upgrade: h2c
请求中的 header ,而是以 400 错误响应。 意识形态上
一些较大的 Web 浏览器开发团队共享并部分参与了 Web 上更多 HTTPS 的插入。如果功能仅通过 HTTPS 实现,这将被视为一种奖励,因为它们会成为网站和服务迁移到 HTTPS 的另一个动机。因此,一些团队从未非常努力地(如果有的话)使 HTTP/2 在没有 TLS 的情况下工作。
几乎
至少有一家浏览器供应商很早就表达了它的意图,即通过纯文本 HTTP (h2c) 为用户实现和提供 HTTP/2。由于上述技术障碍,他们最终从未这样做过。