Pseudo/Colon Header 字段的用途
Purpose of Pseudo/Colon Header Fields
如标题所示,我正在寻找有关 pseudo/colon header 字段用途的一些信息,即我想知道为什么我们有第二种类型的 header领域...
此外 - 我知道 pseudo/colon header 字段在 http2 中用于代替消息和状态行(^^^我不知道的原因^^^);但是 pseudo/colon header 字段是否在 http1 中用于中继不同的信息(来自状态和请求)?
伪 header 字段的目的是统一 request/response 信息在 SPDY 和后来的 HTTP/2(基于 SPDY)中的携带方式。
在设计 SPDY 时(还有 HTTP/2),需要传输以不同方式格式化的请求或响应信息。
HTTP header 是(键,值)对,这很简单。
不过,这里有HTTP方法的概念。这恰好是请求行的第一个标记,所以它不是元组;它的键由它的位置(第一个标记)定义,它的值是请求行上出现的构成第一个标记的实际字符。
请求目标和 HTTP 版本也是如此:它们是请求行的第二个和第三个标记。
所以从概念上讲,一个HTTP请求可以用这种方式来表示,例如:
(method, GET)
(target, /)
(version, HTTP/1.1)
(Connection, close)
(Accept, *)
但是,“方法”、“目标”和“版本”不能用作纯 HTTP header,因为它们从未被 HTTP 规范保留为标准 HTTP header 名称,人们可以将它们用作自定义 HTTP header 名称(想象一下使用“版本”header 的 REST API)。
HTTP/2 需要一种方法来成对地以同质方式携带这些对,因为这会简化(很多)协议。
因此,为请求和响应行携带的额外信息引入了特殊名称。额外的信息在 HTTP/1.1 中是位置信息,但在 HTTP/2 中是正常的对,使得 HTTP/2 在这方面更加均匀:它只是携带对。
如此一来,携带请求和响应信息的 HTTP/2 帧是相同的,只是称为 HEADERS.
选择以冒号开头的伪 header 名称,因为对于 HTTP/1.1 中的 header 名称,冒号是非法字符。
HTTP/1.1 不使用伪 header 名称。
如标题所示,我正在寻找有关 pseudo/colon header 字段用途的一些信息,即我想知道为什么我们有第二种类型的 header领域...
此外 - 我知道 pseudo/colon header 字段在 http2 中用于代替消息和状态行(^^^我不知道的原因^^^);但是 pseudo/colon header 字段是否在 http1 中用于中继不同的信息(来自状态和请求)?
伪 header 字段的目的是统一 request/response 信息在 SPDY 和后来的 HTTP/2(基于 SPDY)中的携带方式。
在设计 SPDY 时(还有 HTTP/2),需要传输以不同方式格式化的请求或响应信息。
HTTP header 是(键,值)对,这很简单。
不过,这里有HTTP方法的概念。这恰好是请求行的第一个标记,所以它不是元组;它的键由它的位置(第一个标记)定义,它的值是请求行上出现的构成第一个标记的实际字符。
请求目标和 HTTP 版本也是如此:它们是请求行的第二个和第三个标记。
所以从概念上讲,一个HTTP请求可以用这种方式来表示,例如:
(method, GET)
(target, /)
(version, HTTP/1.1)
(Connection, close)
(Accept, *)
但是,“方法”、“目标”和“版本”不能用作纯 HTTP header,因为它们从未被 HTTP 规范保留为标准 HTTP header 名称,人们可以将它们用作自定义 HTTP header 名称(想象一下使用“版本”header 的 REST API)。
HTTP/2 需要一种方法来成对地以同质方式携带这些对,因为这会简化(很多)协议。
因此,为请求和响应行携带的额外信息引入了特殊名称。额外的信息在 HTTP/1.1 中是位置信息,但在 HTTP/2 中是正常的对,使得 HTTP/2 在这方面更加均匀:它只是携带对。 如此一来,携带请求和响应信息的 HTTP/2 帧是相同的,只是称为 HEADERS.
选择以冒号开头的伪 header 名称,因为对于 HTTP/1.1 中的 header 名称,冒号是非法字符。 HTTP/1.1 不使用伪 header 名称。