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