我正在使用基于 Spring 4 REST API 注释的配置应用程序。一旦用户通过 JWT 进行身份验证,我想在每个/每个请求上添加响应 header 。我已经为如下所示的内容创建了拦截器:
public class AuthenticateInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception arg3)
throws Exception {
response.addHeader("afterCompletion", "afterCompletion header");
response.setHeader("afterCompletion", "afterCompletion header");
System.out.println("************** afterCompletion **************");
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object,
ModelAndView modelAndView) throws Exception {
response.addHeader("postHandle", "postHandle header");
System.out.println("************** postHandle **************");
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
System.out.println("************** preHandle **************");
return true;
}
}
我的拦截器配置如下:
@Configuration
public class AdapterConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthenticateInterceptor());
}
}
当我收到 JSON 响应时,我无法看到从拦截器添加的附加 header 值。任何人都可以帮助我解决问题,以及如何为每个/每个请求添加来自拦截器的 header 。
最佳答案
我在拦截器上没有成功,而是使用 Filters 或 WebFilter 完美地工作:
@Component
public class ResponseHeaderWebFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
httpServletResponse.setHeader("CustomHeaderName", "SomeValue");
chain.doFilter(request, response);
}
}
如果您使用的是 webflux react 组件,那么:
@Component
public class ResponseHeaderWebFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
exchange.getResponse()
.getHeaders()
.add("CustomHeaderName", "SomeValue");
return chain.filter(exchange);
}
}
关于rest - Spring Rest API 拦截器在每个/每个请求上添加响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43555867/