在 HandlerInterceptorAdapter 中添加响应 header
Add response header in HandlerInterceptorAdapter
我在 HandlerInterceptorAdapter
内的响应中添加 header。
但是,似乎无法在 postHandle
方法中修改响应 header。
public class CredentialInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
return true;
}
@Override
public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView) {
String value = "...";
response.addHeader("header_name",value ); // doesn't work
}
}
如何在响应中添加 header?
流行的解决方案是使用 OncePerRequestFilter
( )。没有别的办法吗?
在 postHandle
方法中添加 headers 的问题是响应可能已经(部分)发送。在这种情况下,您不能再 add/change headers 了。在向客户端发送任何内容之前,您需要设置 headers。
您可以在调用 filterchain.doFilter
之前在 preHandle
方法或更通用的 servlet 过滤器中执行此操作。在上述调用之后执行此操作可能会遇到相同的问题,即已经(部分)发送了响应。
我在 HandlerInterceptorAdapter
内的响应中添加 header。
但是,似乎无法在 postHandle
方法中修改响应 header。
public class CredentialInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
return true;
}
@Override
public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView modelAndView) {
String value = "...";
response.addHeader("header_name",value ); // doesn't work
}
}
如何在响应中添加 header?
流行的解决方案是使用 OncePerRequestFilter
(
在 postHandle
方法中添加 headers 的问题是响应可能已经(部分)发送。在这种情况下,您不能再 add/change headers 了。在向客户端发送任何内容之前,您需要设置 headers。
您可以在调用 filterchain.doFilter
之前在 preHandle
方法或更通用的 servlet 过滤器中执行此操作。在上述调用之后执行此操作可能会遇到相同的问题,即已经(部分)发送了响应。