在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 / 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既没有版本也没有理由伪头。