【发布时间】:2017-06-25 07:30:51
【问题描述】:
我正在尝试编写一个 servlet 过滤器,该过滤器将根据请求的状态将标头添加到响应中。我知道我必须在传递给chain.doFilter 之前用 HttpServletResponseWrapper 包装响应,但标头永远不会被发送,所以我显然遗漏了一些非常明显的东西。
代码看起来像:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(httpServletResponse);
chain.doFilter(request, responseWrapper);
if(responseWrapper.getStatus() < 400)
{
responseWrapper.addHeader("X-Custom-Foobar", "abc");
}
}
在检查完成之前,我必须在包装器中捕获一些内容以防止响应发送到客户端吗?
【问题讨论】:
标签: java servlet-filters