HTTP2:是否可以在流上发送后续或额外的 HEADER 块?
HTTP2: Is it possible to send subsequent or additional HEADER blocks on a stream?
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)
并且:
如果可能请提供一些演示代码;或
如果不是additionalHeaders
函数的意义是什么,作为response
事件returnsheader是什么意义headers
事件?
根据评论,以下内容无效 HTTP/2:
stream.respond(HEADER)
stream.write(DATA)
stream.additionalHeaders(HEADER)
stream.write(DATA)
stream.end(DATA)
但以下是:
stream.respond(HEADER)
stream.write(DATA)
stream.additionalHeaders(HEADER)
这允许您发送一个 trailing header,通常用于动态生成的内容的校验和或其他完整性检查,这些动态生成的内容无法提前知道发送第一个 Headers 请求(它更适合于提前发送headers。
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)
并且:
如果可能请提供一些演示代码;或
如果不是
additionalHeaders
函数的意义是什么,作为response
事件returnsheader是什么意义headers
事件?
根据评论,以下内容无效 HTTP/2:
stream.respond(HEADER)
stream.write(DATA)
stream.additionalHeaders(HEADER)
stream.write(DATA)
stream.end(DATA)
但以下是:
stream.respond(HEADER)
stream.write(DATA)
stream.additionalHeaders(HEADER)
这允许您发送一个 trailing header,通常用于动态生成的内容的校验和或其他完整性检查,这些动态生成的内容无法提前知道发送第一个 Headers 请求(它更适合于提前发送headers。