Feign丢失请求头问题

淩亂°似流年 2023-02-16 00:48 107阅读 0赞

文章目录

  • 1、Feign远程调用丢失请求头问题
  • 2、Feign异步调用丢失请求头问题

【笔记于学习尚硅谷课程所作】

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

在这里插入图片描述

解决:增加拦截器

在这里插入图片描述

  1. @Configuration
  2. public class GuliFeignConfig {
  3. /**
  4. * 解决fein远程调用丢失请求头
  5. * @return
  6. */
  7. @Bean("requestInterceptor")
  8. public RequestInterceptor requestInterceptor() {
  9. return new RequestInterceptor() {
  10. @Override
  11. public void apply(RequestTemplate template) {
  12. // 1、RequestContextHolder 拿到当前的请求
  13. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
  14. if (attributes != null) {
  15. // 原始请求 页面发起的老请求
  16. HttpServletRequest request = attributes.getRequest();
  17. if (request != null) {
  18. // 获取原始请求的头数据 cookie
  19. String cookie = request.getHeader("Cookie");
  20. // 给feign生成的心请求设置请求头cookie
  21. template.header("Cookie", cookie);
  22. }
  23. }
  24. }
  25. };
  26. }
  27. }

2、Feign异步调用丢失请求头问题

在这里插入图片描述

解决:获取之前的请求,让每个异步任务的线程共享ThreadLocal数据

  1. /**
  2. * 解决异步任务拿不到ThreadLocal里的数据
  3. * 获取之前的请求,让每个异步任务的线程共享ThreadLocal数据
  4. */
  5. RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
  6. CompletableFuture<Void> getAddressTask = CompletableFuture.runAsync(() -> {
  7. // 解决异步任务拿不到ThreadLocal里的数据
  8. RequestContextHolder.setRequestAttributes(requestAttributes);
  9. //...
  10. }, executor);

发表评论

表情:
评论列表 (有 0 条评论,107人围观)

还没有评论,来说两句吧...

相关阅读