Feign跨域请求头header空

Blade 未结 1 758
yuchuan
yuchuan 2021-07-08 10:41
  1. 通过网关请求A服务,在通过A服务以Feign方式调用B服务,A服务请求头可以获取,B服务请求头获取不到

  2. 问题分析:blade请求头是通过blade-core-cloud包下BladeFeignRequestHeaderInterceptor 类实现了RequestInterceptor ,但是获取header请求头是通过线程,而线程并没有获取到当前请求线程数据,正常请求调用会通过切面调用RequestLogAspect类下aroundApi函数,aroundApi函数会调用WebUtil.getRequest()获取当前请求头,但是同Feign方式调用请求切面不会调用RequestLogAspect类下aroundApi函数,也不会获取当前请求头;查了资料说是Feign跨域请求和熔断配置有关系,把A服务sentinel熔断去掉Feign调用B服务依然没把请求组装传递

1条回答
  •  admin
    admin (楼主)
    2021-07-08 11:21

    feign有多层调用的情况,推荐将请求头的值从第一层作为参数传递。

    毕竟其他的远程调用比如dubbo是没有请求头概念的,都是通过参数传递。

    作者追问:2021-07-08 11:21

    第一层作为参数传递,你的意思是header参数如token放在地址后面传递吗,springcloud feign本来就支持header参数传递啊

    0 讨论(0)
提交回复