首页 > 解决方案 > HTTP/2 推送承诺行为

问题描述

我正在为 HTTP/2 编写一个弹性客户端。我想知道客户端的行为应该是什么,如果服务器发送了一个 PUSH_PROMISE 然后未能发送与该 PUSH_PROMISE 相关的 PUSH_RESPONSE ?

我浏览了关于Push Response的 HTTP/2 规范,但它没有说明在这种情况下我们应该做什么。

有没有明确的方法来解决这个问题?

标签: httpspecificationshttp2server-pushpush-promise

解决方案


客户端当然可以自由地再次请求相同的资源。例如,考虑到当服务器发送PUSH_PROMISE.

Client                  Server
------                  ------
HEADERS[sid:1, GET /]
                         HEADERS[sid:1, /], DATA [sid:1], PUSH_PROMISE[sid:2]
HEADERS[sid:3, GET /css] HEADERS[sid:2, /css], DATA[sid:2]
                         HEADERS[sid:3, /css], DATA[sid:3]


客户端取消推送的标准方法是通过RST_STREAM.


推荐阅读