Chrome DevTools - 显示一些带有前导:
的HTTP头(不确定为什么它会在某些HTTP头中加上前导符号而在其他HTTP头中不加)。其中之一是HTTP头authority
,显示为:
authority: api.somedomain.com
但是这个HTTP头在维基百科的HTTP头列表中。这是一个新的HTTP2头还是可以在头部定义任何新的请求字段-或者它们是固定的?
Chrome DevTools - 显示一些带有前导:
的HTTP头(不确定为什么它会在某些HTTP头中加上前导符号而在其他HTTP头中不加)。其中之一是HTTP头authority
,显示为:
authority: api.somedomain.com
但是这个HTTP头在维基百科的HTTP头列表中。这是一个新的HTTP2头还是可以在头部定义任何新的请求字段-或者它们是固定的?
这些是定义在新HTTP/2中的伪首部字段
。
HTTP/1.x使用起始行
来表示目标URI、请求方法、响应代码等信息。所有HTTP消息都分为客户端向服务器发出的请求和服务器向客户端发出的响应两种类型。这两种类型可以通过它们的起始行
进行区分,对于请求而言其起始行是请求行
,而对于响应则是状态行
。
request-line = method SP request-target SP HTTP-version CRLF
status-line = HTTP-version SP status-code SP reason-phrase CRLF
您可以在RFC7230第3.1节中了解更多。
但是HTTP/2使用以“:”字符(ASCII 0x3a)开头的特殊伪标头字段来实现此目的。这些伪标题被严格定义。其中有请求伪标头字段和响应伪标头字段。请求伪标头字段包括:method
,:scheme
,:authority
,:path
。
The ":authority" pseudo-header field includes the authority portion of the target URI.
authority = [ userinfo "@" ] host [ ":" port ]
在HTTP/1.x中,它相当于host
头字段。在RFC7540中,提到了一些措施以实现与HTTP/1.x的向后兼容性。
为确保HTTP/1.1请求行可以准确重现,在从以原始形式或星号形式具有请求目标的HTTP/1.1请求进行转换时,必须省略此伪头字段。直接生成HTTP/2请求的客户端应该使用“:authority”伪头字段代替Host头字段。将HTTP/2请求转换为HTTP/1.1的中介如果请求中不存在Host头字段,则必须通过复制“:authority”伪头字段的值来创建一个Host头字段。
阅读更多内容请参考RFC7540。