我已经搜索并看到了关于这个问题的几个答案,但仍然不知道这是怎么可能的......
我被要求实现一个过滤器,该过滤器在响应 header 中返回 HTTP 请求的响应时间,例如。响应 header :XX 以便被网络分析客户端库收集。
这是我的代码:
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpResp = (HttpServletResponse)response;
long startTime = System.nanoTime();
chain.doFilter(request, response);
long endTime = System.nanoTime();
httpResp.addHeader("response-time",endTime-startTime);
}
我也尝试使用 HttpServletResponseWrapper
我设法使用 OutputStream 修改响应,但没有成功设置响应 header 。
谢谢杰伊
最佳答案
扩展包装实用程序类,如 HttpServletResponseWrapper(使用自定义输出流)并将其传递给链 doFilter() 方法。如果您不这样做,则在链 doFilter() 返回后,原始(未包装的)响应将消失,您将没有机会修改它。
在这里您可以找到一个示例:Looking for an example for inserting content into the response using a servlet filter
关于java - 在 chain.doFilter 之后添加响应头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085468/