问题的产生
解决问题
因为在使用fegin远程调用的时候它会重新创建request请求,这个请求是不会带上老请求的请求头信息数据,所有我们通过配置类的方式,先获取老请求中的header 然后放到新的request中 就可以解决问题了
@Bean("requestInterceptor")
public RequestInterceptor requestInterceptor(){
return new RequestInterceptor() {
@Override
public void apply(RequestTemplate requestTemplate) {
// 通过RequestContextHolder获取刚刚请求进来的request
ServletRequestAttributes requestContextHolder = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestContextHolder.getRequest();// 老请求
String cookie = request.getHeader("Cookie");// 获取老请求中的header
requestTemplate.header("Cookie",cookie);// 添加到新的request的header中
}
};
}
Q.E.D.
Comments | 0 条评论