有时通过网关调用子系统,需要把header带上,以确保session的一致,但spring cloud默认是不带header的,这时候需要手动传递
@Bean
public RequestInterceptor headerInterceptor() {
return new RequestInterceptor() {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String values = request.getHeader(name);
requestTemplate.header(name, values);
}
}
}
};
}
参考:http://blog.csdn.net/u014519194/article/details/77160958
参考:https://www.jianshu.com/p/10429b5c22ce