protocol 什么情况下是1.1,什么情况下是2?

新手上路,请多包涵

如下图的请求中红框现实的是http/1.1。但是有时候会是2,我记得是nginx配置的。
想知道具体什么情况下使用1.1,什么情况下使用2。
今天遇到一个情况,后端改成2了,有些资源拿不到了,这个是为什么?
image.png

阅读 2.2k
2 个回答

取决于浏览器和服务器是否都支持。

首先 HTTP/2 是建立在 SSL/TLS 的基础之上的,虽然原则上并没有强制使用 HTTPS,但目前的实现上都基于 HTTPS 来实现的。

所以服务器到底返回 HTTP/2 的数据还是 HTTP/1.1 的数据,其决定过程就发生在 SSL 握手阶段。在握手阶段,浏览器与服务器会协商出是否支持 HTTP/2(对于 Chrome 而言主要就是看是否支持 APLN,如果支持,则进入 h2 的处理流程)。

至于你最后的问题,给出的信息太少,无法做出判断。

1.1指的是http1.1,2指的是http2。现在没有规定说什么情况用哪个协议。只是在资源的加载速度方面,http2相对http1.1更快,所以现在的趋势都会用http2。

你说的有时候看到是1.1,有时候是2。这个估计是因为不同的资源对应的服务器有没有开启http2导致的。

最后一个问题,比较奇怪。按道理改为http2应该也能拿到资源的。
需要具体问题具体分析,比如拿不到资源是报什么错?资源服务器都是通过nginx来获取的?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题