openFegin丢失请求头的问题

2020-06-12   162 次阅读


问题的产生

image.png

解决问题

因为在使用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中
            }
        };
    }

image.png

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

只有不断的努力才会有更大的惊喜等着你去发现!!