提问人:brillout 提问时间:5/12/2022 更新时间:5/16/2022 访问量:1502
如何在HTTP Body流期间/之后发送HTTP标头?这方面有规范工作吗?
How to send HTTP Headers during/after HTTP Body stream? Is there spec work on this?
问:
今天,在将 HTTP 正文的单个位发送到浏览器之前,都需要发送 HTTP 标头。
这在 React 18 Streaming 等新技术中尤其成问题,其中某些标头(例如缓存标头和 )只能在 HTTP 流的末尾确定。理想情况下,这些延迟的标头将在结束流之前发送到浏览器。103 Early Hints
规范工作组或浏览器供应商是否努力使标头能够在 HTTP 正文期间/之后发送?
经过研究,似乎没有关于此的规范工作,但我想知道是否有浏览器供应商正在研究这个问题?(一些浏览器用户在 StackOverflow 上很活跃。
上下文:我是 vite-plugin-ssr 和 react-streaming 的作者。
答:
4赞
Richard Woods
5/16/2022
#1
有一个用于分块编码(Http 1.1、https://httpwg.org/specs/rfc7230.html#header.trailer)的 Trailer 字段规范。
HTTP2 规范(不支持分块编码)直接允许在包含 http 正文 https://datatracker.ietf.org/doc/html/rfc7540#section-8.1 的数据帧后面有一个标头帧。
库支持可能会有所不同,因为大多数 http 库都试图抽象出底层协议中的差异。在 Javascript 中,您将对在跨浏览器标准 fetch API 中启用尾随标头感兴趣。MDN 文档建议支持引用对象上的字段:https://developer.mozilla.org/en-US/docs/Web/API/Response。trailers
Response
评论
0赞
brillout
5/17/2022
截至最近(2022 年 5 月),所有浏览器供应商似乎都支持 Trailer 标头:stackoverflow.com/a/72271958/270274。Node.js似乎也支持它:nodejs.org/api/http2.html#responseaddtrailersheaders。
评论