【问题标题】:authority http header - in chrome dev tools授权 http 标头 - 在 chrome 开发工具中
【发布时间】:2020-08-25 19:55:51
【问题描述】:
chrome 开发工具 - 显示一些带有前导 : 的 http 标头(不知道为什么它对某些而不是其他)。
其中之一是 http 标头 authority,它显示为:
authority:api.somedomain.com
但是,这在 Wikipedia 上的 http 标头列表中列出。这是一个新的 HTTP2 标头还是可以在标头中定义任何新的请求字段 - 或者这些是固定的吗?
【问题讨论】:
标签:
http
google-chrome-devtools
【解决方案1】:
这些是在新的 HTTP/2 中定义的Pseudo-Header Fields。
HTTP/1.x 使用消息start-line 来表示目标URI、请求方法、响应代码等。所有HTTP 消息要么是从客户端到服务器的请求,要么是从服务器到客户端的响应。这两种类型的区别在于它们的start-line,即用于请求的request-line,或用于响应的status-line。
request-line = method SP request-target SP HTTP-version CRLF
status-line = HTTP-version SP status-code SP reason-phrase CRLF
您可以在RFC7230 section 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 ]
在RFC7540阅读更多内容。
在 HTTP/1.x 中,它相当于 host 头字段。在 RFC7540 中,提到了一些向后兼容 HTTP/1.x 的措施
为确保 HTTP/1.1 请求行可以准确再现,当从具有源或星号形式的请求目标的 HTTP/1.1 请求转换时,必须省略此伪标头字段。直接生成 HTTP/2 请求的客户端应该使用 ":authority" 伪头字段而不是 Host 头字段。如果请求中不存在 Host 头字段,则将 HTTP/2 请求转换为 HTTP/1.1 的中介必须通过复制“:authority”伪头字段的值来创建主机头字段。