如何发送 HTTP Headers during/after HTTP Body 流?有这方面的规范工作吗?

How to send HTTP Headers during/after HTTP Body stream? Is there spec work on this?

今天,HTTP headers 都需要在将 HTTP body 的一位发送到浏览器之前发送。

这对于 React 18 Streaming 等新技术尤其成问题,其中某些 headers,例如缓存 headers 和 103 Early Hints,只能在结束时确定HTTP 流。理想情况下,这些迟到的 headers 会在结束流之前发送到浏览器。

规范工作组或浏览器供应商是否努力使 headers 能够发送 during/after HTTP body?

经过研究,似乎没有这方面的规范工作,但我想知道是否有浏览器供应商在做这方面的工作? (一些浏览器用户在 Whosebug 上很活跃。)

上下文:我是 vite-plugin-ssr and react-streaming 的作者。

有一个用于分块编码的尾部字段规范(Http 1.1,https://httpwg.org/specs/rfc7230.html#header.trailer)。

HTTP2 规范(不支持分块编码)直接允许 headers 帧跟随包含 http body https://datatracker.ietf.org/doc/html/rfc7540#section-8.1.

的数据帧

库支持可能会有所不同,因为大多数 http 库都试图抽象出底层协议中的差异。在 Javascript 中,您将有兴趣在 cross-browser 标准提取 API 中启用尾随 headers。 MDN 文档建议参考 Response object 上的 trailers 字段提供支持:https://developer.mozilla.org/en-US/docs/Web/API/Response.