Feign远程调用请求头header空

Blade 未结 1 800
274056675@qq.co
274056675@qq.co 2022-06-18 18:24

一、该问题的重现步骤是什么?

1. 

HttpServletRequest request = WebUtil.getRequest();


二、你期待的结果是什么?实际看到的又是什么?

Feign远程调用请求头不为空



1条回答
  •  yinyuncan
    yinyuncan (楼主)
    2022-06-19 10:21

    blade-tool项目中 对于feign 和restTemplate 都有对请求做拦截处理 


    大概流程就是 :

    1.  BladeServletRequestListener利用ServletRequestListener 从客户端请求头中获取指定的请求头中数据 

    2.  

        ServletRequestListener介绍与示例:http://www.51gjie.com/javaweb/873.html


    image.png


    2. BladeFeignRequestInterceptor把获取到的请求头 put到ThreadLocal

    image.png


    所以你希望从被调用的服务获取到token需要满足以下几点

    1.  客户端请求必须携带token请求,这样后台才能取到调用者的token

    2. 相关的配置类必须生效,具体怎么生效 看代码的注解配置

      相关的配置类:ServletHttpHeadersGetter,.BladeHystrixAutoConfiguration,BladeSentinelAutoConfiguration



    如果还是找不到原因 需要直接debug到我提到的配置类与拦截器 看看是否生效

    作者追问:2022-06-19 10:21

    这里的数据怎么获取

    1655696613524_5A3C5531-F569-4924-8C2C-0EF89DE73C69.png

    0 讨论(0)
提交回复