HTTP1.1 到 HTTP/2:headers 呢?
HTTP1.1 to HTTP/2: what about headers?
在 HTTP 1.1 中,状态行是
scheme/version code reason
HTTP/1.1 200 OK
我在 HPACK 规范中看到了 :scheme 和 :status headers。但是我没有看到任何版本或原因?没有一个吗?
在 HTTP 1.1 的请求中,请求行是
method uri scheme/version
POST http://myhost.com HTTP/1.1
我看到了 :method 和 :path,我认为它只是一个相对路径,它与完整的绝对路径不同(并且因为 Chrome 和 Firefox 正在为 HTTP/2,这可能是有道理的)。不过我没有看到版本 header。
有版本header吗?还是在协议决定之前总是知道这并不真正需要?
原因代码呢?是否假设这些是相当恒定的,所以消失了(我在这里猜测)?
在 HTTP/1 中,需要版本标记来区分 HTTP/1.0 和 HTTP/1.1,因为它们具有相同的线路表示,但支持不同的功能。
例如,客户端声明 HTTP/1.1 隐式地告诉服务器它支持持久连接和内容分块。
使用HTTP/2,协议版本已协商。
在 clear-text HTTP/2 中,Upgrade
header 报告 h2c
,其中 2
表示协议的版本 2。我想对于 HTTP/3,令牌将更改为 h3c
。
加密的 HTTP/2 也会发生类似情况,其中令牌 h2
是通过 ALPN 协商的。
原因消息已被删除,因为它是多余的,因为状态代码已经传达了所有必要的信息(更不用说它们可能是攻击媒介)。
由于这些原因,HTTP/2 既没有版本也没有原因 pseudo-headers。
在 HTTP 1.1 中,状态行是
scheme/version code reason
HTTP/1.1 200 OK
我在 HPACK 规范中看到了 :scheme 和 :status headers。但是我没有看到任何版本或原因?没有一个吗?
在 HTTP 1.1 的请求中,请求行是
method uri scheme/version
POST http://myhost.com HTTP/1.1
我看到了 :method 和 :path,我认为它只是一个相对路径,它与完整的绝对路径不同(并且因为 Chrome 和 Firefox 正在为 HTTP/2,这可能是有道理的)。不过我没有看到版本 header。
有版本header吗?还是在协议决定之前总是知道这并不真正需要?
原因代码呢?是否假设这些是相当恒定的,所以消失了(我在这里猜测)?
在 HTTP/1 中,需要版本标记来区分 HTTP/1.0 和 HTTP/1.1,因为它们具有相同的线路表示,但支持不同的功能。
例如,客户端声明 HTTP/1.1 隐式地告诉服务器它支持持久连接和内容分块。
使用HTTP/2,协议版本已协商。
在 clear-text HTTP/2 中,Upgrade
header 报告 h2c
,其中 2
表示协议的版本 2。我想对于 HTTP/3,令牌将更改为 h3c
。
加密的 HTTP/2 也会发生类似情况,其中令牌 h2
是通过 ALPN 协商的。
原因消息已被删除,因为它是多余的,因为状态代码已经传达了所有必要的信息(更不用说它们可能是攻击媒介)。
由于这些原因,HTTP/2 既没有版本也没有原因 pseudo-headers。