HTTP1.1到HTTP / 2:标头呢?

问题描述 投票:3回答:1

在HTTP 1.1中,状态行为

scheme/version code reason
HTTP/1.1 200 OK

我在HPACK规范中看到:scheme和:status标头。但是,我没有看到任何版本或原因?没有一个吗?

在HTTP 1.1中的请求中,请求行为

method uri scheme/version
POST http://myhost.com HTTP/1.1

[我看到:method和我看到:path,我认为这只是一个相对路径,它与完整的绝对路径不同(并且由于Chrome和Firefox将HTTPS推送为HTTP / 2,这可能是有道理的) 。我没有看到版本标头。

是否有版本标头?还是在协议决定之前就已经知道了这一点,因此并不需要它?

原因码呢?是否假定它们是相当恒定的,以便消失(我在这里猜测)?

http http2
1个回答
5
投票

在HTTP / 1中,需要版本令牌来区分HTTP / 1.0与HTTP / 1.1,因为它们具有相同的线路表示形式,但支持不同的功能。

例如,客户端声明HTTP / 1.1隐式告诉服务器它支持持久连接和内容组块。

使用HTTP / 2,协议版本为协商

在明文HTTP / 2中,Upgrade标头报告h2c,其中2表示协议的版本2。我想对于HTTP / 3,令牌将更改为h3c。对于加密的HTTP / 2也会发生类似的情况,其中令牌h2通过ALPN协商。

原因消息已被删除为冗余消息,因为状态代码已经在传达所有必要的信息(更不用说它们可能是攻击媒介)。

由于这些原因,HTTP / 2既没有版本也没有理由伪头。

© www.soinside.com 2019 - 2024. All rights reserved.