【发布时间】:2011-05-21 21:41:01
【问题描述】:
我想根据响应类型设置 HTTP 标头。我的问题是一些响应在我设置我的标题之前提交了他们的标题。有关如何处理此问题的任何建议?
【问题讨论】:
-
功能需求不清楚,所以这里只是一个相关问题的链接,它更清楚地说明了功能需求:stackoverflow.com/questions/2563344/…
标签: java servlets jakarta-ee servlet-filters
我想根据响应类型设置 HTTP 标头。我的问题是一些响应在我设置我的标题之前提交了他们的标题。有关如何处理此问题的任何建议?
【问题讨论】:
标签: java servlets jakarta-ee servlet-filters
一个想法是在调用servlet之前在过滤器中的响应对象中设置响应标头。
另一种方法是为 servlet 提供一个响应包装器,以防止真正的响应被实际提交。这可能需要在内存中缓冲响应正文。
但我认为最好的方法是修改 servlet,以便它们设置所需的标头。
我是否必须通过向包装器提供自己的输出流来缓冲整个响应?我可以覆盖 flush() 或类似的东西吗?
如何实现它取决于您。约束是响应包装对象必须以某种方式安排在响应正文的写入开始之前添加特殊标头。概念上简单的方法是缓冲响应正文,但您也可以让响应包装器提供输出流/写入器,在第一次刷新之前将标头添加到实际响应输出流/写入器。
我担心缓冲会导致性能问题
是的,它可以做到,尽管您需要查看整个 webapp 以确定这是否重要。
从性能的角度来看,最好的解决方案是让 servlet 自己设置标头。
【讨论】: