SpringCloud学习 Feign远程调用 异步调用CompletableFuture 丢失请求头问题的解决
1.使用Feign进行远程调用丢失请求头问题
当使用Feign进行远程调用时,Feign会自动构造一个新的http请求再发送.因此会默认丢掉原请求的请求头信息.导致一些重要的数据丢失(Cookie)
解决方法: 添加Feign远程调用拦截器,在拦截器中进行请求头信息的同步.
原理:Feign在构造http远程调用请求时,会检查是否有添加拦截器RequestInterceptor(默认没有),如果有,在构造时会先执行拦截器的apply方法,因此在apply方法中实现请求头信息的同步可以解决原请求头信息丢失的问题.
设置拦截器:
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
y
@Configuration
public class MyFeignConfigration