我需要在每个响应中添加页眉。我计划执行以下操作:
public class MyFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
filterChain.doFilter(request, response);
response.addHeader("Access-Control-Allow-Origin", "*");
}
}
我希望在filterChain.doFilter(request, response)
之后执行它,这样一旦控制器处理完成,我就可以在将结果返回给客户端之前添加头信息。这正确吗?但是按照如何编写响应过滤器?中的说法:
chain.doFilter
方法返回后,对响应进行任何操作都太晚了。此时,整个响应已经发送给客户端,并且您的代码无法访问它。
以上陈述对我来说不正确。我不能在filterChain.doFilter(request, response)
之后添加标头吗?如果不行,为什么? 我正在使用Spring MVC。
HandlerInterceptor
不允许在postHandle
中修改响应,该方法会在控制器处理请求后触发。OP(以及我自己)希望在响应发送到客户端之前添加一个响应头。 - shashwatimplements ResponseBodyAdvice<Object>
中的beforeBodyWrite
方法。 - shashwat