在写入响应主体后设置HttpServletResponse的头信息

6
我通过艰难的方式发现,在向输出缓冲区写入响应正文之后,不可能向HttpServletResponse添加更多标头。虽然在某些随机的宇宙中这可能有意义,但我猜一切仍然只是在内存中缓冲。
现在的问题是:是否有一些技巧可以绕过这个限制?显然,由于函数resetBuffer()可用,允许清除内容主体而不清除标头,因此必须有一种方法使HttpServletResponse对象返回到可以写入更多标头的状态。例如,是否有一种方法可以读取内容主体、使用resetBuffer()清除它、设置更多标头,然后恢复内容主体?
另外: 我想这样做的原因是,我希望在我的servlet中将一个标头作为最后一步添加,以告诉我服务器处理请求所需的时间。
1个回答

6

您唯一的选择是自己缓冲响应体;当响应体完成后,再添加头部,然后写入响应体。

有趣的是,HTTP/1.1通过使用分块编码中的trailer来在响应体之后发送头部,但没有人实现它,所以不要费心。


所有我进一步的研究都证明了你是正确的,不幸的是。 - Markus A.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接