2

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

4

2 回答 2

1

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

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

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

于 2015-06-21T14:28:09.327 回答
0

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

于 2020-08-07T10:23:26.350 回答