在http 1.1中,状态行是
scheme/version code reason
HTTP/1.1 200 OK
我看到:方案和:HPACK规范中的状态标头。但是,我没有看到版本或原因的任何内容?没有吗?
在http 1.1中的请求中,请求行是
method uri scheme/version
POST http://myhost.com HTTP/1.1
我看到:方法,我看到:我认为路径只是一条相对路径,与完整的绝对路径不同(因为chrome和firefox正在推动https for http2,这可能有意义)。我看不到版本标题了吗?
是否有版本标题?或者是否看到在协议决定之前总是知道它并不是真的需要它?
原因代码怎么样?是假设它们是相当不变的,所以它消失了(我猜这里)。
感谢, 迪安
答案 0 :(得分:4)
在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既没有版本也没有原因伪标头。