1

http2 rfc http://httpwg.org/specs/rfc7540.html说:

所有 HTTP/2 请求必须为 :method、:scheme 和 :path 伪标头字段包含一个有效值

(注意不包括权限)

对于推送承诺:

服务器必须在 :authority 伪头字段中包含一个服务器对其具有权威性的值

我的问题是,对于服务器推送承诺请求帧,服务器是否需要始终包含权限伪标头,或者如果它决定包含它,那么它必须是服务器具有权威性的权限?

4

1 回答 1

2

我认为:authority标头必须始终包含在PUSH_PROMISE帧中,因为如果证书和 IP 地址相应地解析,客户端可能会为不同的主机名使用相同的连接。

通过添加权限框架,客户端将在推送的资源和需要检索的资源之间进行精确匹配。

如果没有:authority标头,客户端可能会假定推送的资源是https://example.com/background.png,但后来在从下载的 HTML 中example.com发现该资源是https://images.example.com/background.png;因为 URI 不匹配,客户端会发出对该资源的请求,而不是使用推送的资源。

除了这个解释之外,你可以尝试发出一个PUSH_PROMISEwithout:authority并查看各种浏览器的行为:有时实现行为会被用来加强规范。

于 2017-12-23T16:32:56.220 回答