Feign远程调用丢失请求头问题

Feign远程调用丢失请求头问题

  • 模型图
  • 解决办法
    加上feign远程调用的请求拦截器
@Configuration
public class FeignConfig {

    @Bean("requestInterceptor")
    public RequestInterceptor requestInterceptor() {
        return new RequestInterceptor() {
            @Override
            public void apply(RequestTemplate requestTemplate) {
                //拿到刚进来的这个请求
                ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
                HttpServletRequest request = attributes.getRequest();
                //同步请求头数据,cookie
                String cookie = request.getHeader("Cookie");
                requestTemplate.header("Cookie", cookie);
            }
        };
    }
}

Feign异步情况丢失上下文问题

  • 模型图
  • 解决办法
    在主线程拿到原始请求数据
...
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
...

在每一个异步线程中重新获取数据

....
RequestContextHolder.setRequestAttributes(requestAttributes);
....
posted @ 2021-01-30 12:38  liuaaaaaa  阅读(141)  评论(0)    收藏  举报