I have a filter with doFilter method like this: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response;
resp.setHeader("Cache-Control", "must-revalidate, max-age=0, post-check=0, pre-check=0"); chain.doFilter(request, response); } This sets the header. However, if I set the header *after* chain.doFilter, the header is not set. Why is this? public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; chain.doFilter(request, response); resp.setHeader("Cache-Control", "must-revalidate, max-age=0, post-check=0, pre-check=0"); } Programmatically I can see the header is null. Has the content already been sent to the web browser after chain.doFilter? If so, is there a way to delay sending data to the browser? I need to inspect the status code in the response before setting my header (to prevent 404's from being cached). Thanks, Brendan Miller