我真的搜索了网络,但我找不到网络浏览器不支持 h2c(没有 TLS 的 http/2)的原因。任何想法,赞赏。
稍微澄清一下
http/2 和 https 使用 ALPN(这称为 h2)。
http/2 与 http 不需要 ALPN(这称为 h2c),但几乎没有网络浏览器支持它。为什么会这样呢?
我觉得对于许多资源来说,虽然真实性总是好的,但不需要保密(尽管有一些私有实现,但 http 正文的数字签名并未得到广泛支持)。考虑到不需要保密,那么h2c确实是一个好东西。
从技术上来说
HTTP/2 比 HTTPS 更好、更容易处理有几个技术原因:
- 使用 ALPN 在 TLS 中进行 HTTP/2 协商要容易得多,并且不会丢失像
Upgrade:
在普通 HTTP 中是这样的。而且它不会遇到纯文本 HTTP/2 遇到的 POST 升级问题。
- N% 的网络不支持主动提供
Upgrade: h2c
请求中的标头,而是以 400 错误进行响应。
- 在 TCP 端口 80 上执行 HTTP/1.1 之外的其他操作在 Y% 的情况下会中断,因为世界上充满了为此类连接“帮助”和替换/添加流中内容的中间盒。如果那不是 HTTP/1.1,事情就会崩溃(这也是为什么 brotli 也需要 HTTPS)。
意识形态上
人们正在推动网络上更多的 HTTPS,一些较大的网络浏览器开发团队共享并部分参与其中。如果仅通过 HTTPS 实现功能,这会被认为是一种奖励,因为它们会成为网站和服务迁移到 HTTPS 的另一个动力。因此,一些团队从未非常努力地(如果有的话)让 HTTP/2 在没有 TLS 的情况下工作。
几乎
至少有一家浏览器供应商很早就表示有意为通过纯文本 HTTP (h2c) 完成的用户实现和提供 HTTP/2。由于上述技术障碍,他们最终从未这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)