是否允许 HTTP/2 服务器发送优先级帧



我想要一个服务器来推送一堆内容,但我希望它按顺序推送。显然,服务器可以按顺序发送内容,但如果服务器实际上可以设置流依赖项(使其明确,允许客户端在不同意时更改优先级等),那就太好了。这是允许的吗?具体来说,我想发送一个紧跟 PRIORITY 帧的PUSH_PROMISE,以将承诺的流设置为前一个流的依赖项。

很好的问题!不是一个好的答案,但这是我发现的:

  • (8.2.1)"推送的响应总是与来自客户端的显式请求相关联。服务器发送的PUSH_PROMISE帧在该显式请求的流上发送。PUSH_PROMISE帧还包括一个承诺的流标识符,该标识符是从服务器可用的流标识符中选择的(请参阅第 5.1.1 节)" 也就是说,PUSH_PROMISE与源流的标头一起使用,然后它包含承诺流的 id。这样,新流依赖于源流。

  • (6.3)没有说谁可以发送PRIORITY帧,但它指的是5.3。(5.3) 表示只有客户端才能建立优先级作为 HEADERS 框架的一部分。该段的第二句话说,否则可以使用优先级框架......由客户端和服务器?不完全清楚,但如果我必须打赌,我只会说客户。

HTTP/2 文档对此并不清楚,但对于 PRIORITY 部分,可以理解为任何人都可以在几乎任何时候发送它。查看这场辩论,你会看到一些小组讨论这种情况。我想说你不应该忽略它,因为如果规范没有禁止它,那么它是允许的,你应该处理它。

最新更新