我想根据响应类型设置 HTTP header 。我的问题是,一些回复在我设置我的标题之前就提交了它们的标题。关于如何处理这个问题有什么建议吗?
最佳答案
一个想法是在调用 Servlet 之前在过滤器的响应对象中设置响应 header 。
另一种方法是为 servlet 提供一个响应包装器,以防止实际提交真正的响应。这可能需要在内存中缓冲响应正文。
但我认为最好的方法是修改 servlet,以便它们设置所需的 header 。
<小时/>Do I HAVE to buffer the entire response by providing my own outputstream to the wrapper ? Can I overwrite flush() or something like that ?
如何实现取决于您。限制是响应包装对象必须以某种方式安排在开始写入响应主体之前添加特殊 header 。概念上简单的方法是缓冲响应主体,但您也可以让响应包装器提供一个输出流/写入器,在第一次刷新之前将 header 添加到真正的响应输出流/写入器。
I am worried about buffering causing performance issues
是的,确实可以,不过您需要查看整个网络应用程序来确定这是否重要。
从性能角度来看,最好的解决方案是让 servlet 自己设置 header 。
关于java - 需要根据 Servlet 响应有条件地设置 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382285/