http2:PUSH_PROMISE客户端流状态

时间:2018-01-14 01:07:09

标签: http2 server-push push-promise

http2 spec说:

  

接收方必须在流上处理PUSH_PROMISE的接收   既不是"开放"也不是半封闭(本地)"作为连接错误   (PROTOCOL_ERROR类型的(第5.4.1节)。但是,有一个端点   在关联的流上发送RST_STREAM必须处理PUSH_PROMISE   可能在RST_STREAM帧之前创建的帧   收到并处理。

规范也有lifecycle diagram

我的理解是,为了让客户在流上接收PUSH_PROMISE,客户端必须在该流上全部

  • HEADERS帧(+任意CONTINUATION s)发送到服务器
  • 未收到服务器的END_STREAM标记
  • 未从服务器
  • 收到RST_STREAM

(这里特别缺少的是"没有向服务器发送RST_STREAM帧“,这将导致流被关闭&#34 ;;上面的引用说这不是理由连接错误。)

在不符合这些条件的任何情况下,客户端必须将接收PUSH_PROMISE视为连接错误。

这是正确的理解吗?

1 个答案:

答案 0 :(得分:1)

您的理解是正确的。

HTTP / 2协议将PUSH_PROMISE流与现有流相关联,称为关联流

关联的流必须满足问题中引用的规范部分中定义的条件;问题中的子弹列表是说明规则部分所说的相同内容的另一种方式。