为了账号安全,请及时绑定邮箱和手机立即绑定

在同一资源的 http2 推送正在进行时触发 GET 请求时会发生什么

在同一资源的 http2 推送正在进行时触发 GET 请求时会发生什么

RISEBY 2023-02-24 15:21:44
当触发单个 GET 请求时会发生什么,同时正在为同一资源发送 http2 推送?指定的行为是什么以及浏览器实际做什么?示例场景可能如下所示:at time 0: GET / (get document) and the server pushes /data.json at time 1: GET /data.json (triggered by script, while the h2 push is still not finished / in-flight)这会导致两次调用服务器吗?这种行为是指定的还是特定于浏览器的,例如在 Chromium 中可能通过 HTTP 缓存:缓存实现单写入器 - 多读取器锁定,以便在任何给定时间只有一个对同一资源的网络请求在运行。 https://www.chromium.org/developers/design-documents/network-stack/http-cache
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

RFC 7540 中的 HTTP/2 规范

一旦客户端收到 PUSH_PROMISE 帧并选择接受推送的响应,在承诺的流关闭之前,客户端不应该发出任何对承诺的响应的请求。

因此,如果服务器开始发送的时间不会太长,请求似乎很可能会等待推送响应被传送:

如果客户端出于任何原因确定它不希望
从服务器接收推送的响应,或者如果服务器花了
太长时间
才开始发送承诺的响应,则客户端可以
使用 CANCEL 或 REFUSED_STREAM 发送 RST_STREAM 帧代码
并引用推送流的标识符。


查看完整回答
反对 回复 2023-02-24
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信