浏览器如何决定一个请求是用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在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ZhaoBuDaoFangXia/article/details/121772935