浏览器如何决定一个请求是用HTTP1还是HTTP2?

Posted wen_rc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器如何决定一个请求是用HTTP1还是HTTP2?相关的知识,希望对你有一定的参考价值。

HTTP2众所周知的很方便,多路复用、二进制协议、优先级控制、服务器推送、头压缩,那在浏览器,怎么知道一个请求是用http1还是http2呢?

难道是先用http1试下,问问能不能upgrade,可以再升级到http2? 这样听上去很慢?要多一个请求。
或者浏览器本地存一个表,存的是服务器ip+请求url,记录哪些是支持http2的? 但这样开销似乎挺大的,不现实。

查文章才发现有这个说法

https://hpbn.co/http2/
在tls握手的时候就去协商能不能用http2,这样就不会造成浪费了,不过这也导致https看上去就跟http2绑在一起一样,事实上也是,chrome和firefox要用http2,都得是https。

国内也有大佬抓包分析过
https://imququ.com/post/protocol-negotiation-in-http2.html

以上是关于浏览器如何决定一个请求是用HTTP1还是HTTP2?的主要内容,如果未能解决你的问题,请参考以下文章

浏览器如何决定一个请求是用HTTP1还是HTTP2?

浏览器如何决定一个请求是用HTTP1还是HTTP2?

如何知道请求是使用 HTTP 1.x 还是 HTTP2 执行的

浏览器302重定向传递hash

如何禁用响应 nginx 或 apache 或 caddy 中的 http1 请求?

如果没有在 API 请求中指定端口号,服务器如何决定该请求是针对端口 80 还是 443