HTTP/2
:method
伪头相当于HTTP/1.1请求方法(HTTP/1.1请求行的第一个令牌)。
HTTP/2
:authority
伪头是关于主机权限(即主机名和主机端口)的更严格、强制性的信息。
在HTTP/1.1中,主机权限来自多个来源,甚至可能不存在,从而导致许多依赖于服务器实现的混乱行为。
例如,当HTTP/1.1请求目标处于
absolute form
.
如果HTTP/1.1请求目标处于
origin form
,通常由
Host
header
.
但是,HTTP/1.1请求可以是以下形式:
GET / HTTP/1.1\r\n
Host: \r\n
\r\n
在哪里
主办
字段为空,因此没有权限。这种类型的请求并不常见,但在技术上有效,不同的服务器实现可能表现不同。
此外,管理局可能会被
Forwarded
header
及其过时的前辈
X-Forwarded-*
标题,但同样使用模糊规则。
HTTP/2的目的
:权威
pseudo header是为了消除关于权限的混淆,这样就只有一个源,而不再有多个源,比如HTTP/1.1绝对格式或
主办
标题等。
关于优化,HTTP/2确实可以优化
:权威
信息,但这与
:权威
伪标题。
优化工作(非常粗略地)是这样的:当一个用户代理(比如浏览器)请求一个页面时,它很可能会向同一机构发出后续请求,请求呈现页面所需的其他辅助资源(例如CSS资源、JavaScript资源、图像等)。
HTTP/2协议为
:权威
字符串,比方说在HPACK上下文的索引17处,因此浏览器向服务器发送第一个包含信息的请求
:authority => (17, "veryverylongdomainname.com")
.
对于第二个请求,浏览器和服务器现在共享此公共信息,因此浏览器可以直接发送到服务器
:authority => 17
,服务器将从索引17中查找权限,并通过网络保存权限字符串字节的发送。
这种HPACK机制适用于大多数报头,而不仅仅适用于伪报头。有关更多信息,请参阅
HPACK specification
.
浏览器必须对每个资源发出请求。如果它们请求相同的权限,HPACK优化可能会启动并减少网络上的字节数。
如果浏览器请求不同的权限(想象一个网络蜘蛛),那么每个请求中的权限可能不同,HPACK优化可能不会生效,因为权限总是不同的。
在最坏的情况下(当局总是不同),HTTP/2和HTTP/1.1一样好;但在常见情况下(具有相同权限的许多资源的网页),HTTP/2优于HTTP/1.1,因为通过网络发送的字节更少。