HTTP2:是否可以在一个流上发送后续或额外的HEADER块?

问题描述 投票:0回答:1

Node提供了这个方法。

http2stream.additionalHeaders(headers)

哪个 Sends an additional informational HEADERS frame to the connected HTTP/2 peer.

然而节点代码库中包含这样的注释。

// Sends a block of informational headers. In theory, the HTTP/2 spec
// allows sending a HEADER block at any time during a streams lifecycle,
// but the HTTP request/response semantics defined in HTTP/2 places limits
// such that HEADERS may only be sent *before* or *after* DATA frames.
// If the block of headers being sent includes a status code, it MUST be
// a 1xx informational code and it MUST be sent before the request/response
// headers are sent, or an error will be thrown.

是否可以在一个流上发送后续或额外的HEADER块?

如:伪代码。

stream.respond(HEADER)
stream.write(DATA)
stream.additionalHeaders(HEADER)
stream.write(DATA)
stream.end(DATA)

And:

  • 如果可能的话,请提供一些演示代码;或者

  • 否则,何必 additionalHeaders 的功能,而作为 response 事件返回的头是什么点。headers 事件?

javascript node.js http2
1个回答
1
投票

根据注释,以下是无效的HTTP2。

stream.respond(HEADER)
stream.write(DATA)
stream.additionalHeaders(HEADER)
stream.write(DATA)
stream.end(DATA)

但下面是有效的

stream.respond(HEADER)
stream.write(DATA)
stream.additionalHeaders(HEADER)

这允许你发送一个 页眉,通常用于对动态生成的内容进行校验和或其他完整性检查,这些内容无法在第一次Headers请求中提前知道发送(提前发送headers比之后发送headers更可取)。

© www.soinside.com 2019 - 2024. All rights reserved.