http2 rfc http://httpwg.org/specs/rfc7540.html说:
所有HTTP / 2请求必须只包含:method,:scheme和:path伪标头字段的一个有效值
(注意它不包括权限)
推动承诺:
服务器必须在:authority伪标头字段中包含一个值,服务器对该字段具有权威性
我的问题是,对于服务器推送承诺请求帧,服务器是否需要始终包含权限伪标头,或者如果它决定包含它,那么它必须是服务器权威的权限?
我认为:authority
标头必须始终包含在PUSH_PROMISE
框架中,因为如果证书和IP地址相应地解析,客户端可以对不同的主机名使用相同的连接。
通过添加权限框架,客户端将在被推送的资源与其需要检索的资源之间进行精确匹配。
如果没有:authority
标头,客户端可能会认为推送资源是https://example.com/background.png
,但后来在从example.com
下载的HTML中找到资源而不是https://images.example.com/background.png
;因为URI不匹配,客户端会发出对该资源的请求,而不是使用推送的资源。
除了这个解释之外,您可以尝试在没有PUSH_PROMISE
的情况下发出:authority
并查看各种浏览器的行为:有时候,实现行为会用于强化规范。