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

而参数template 是 RequestTemplate 类型,生成Request对象的数据是template中携带的数据,所以给template的请求头添加上Q请求中的请求头数据,那么生成Request对象便会携带上请求头数据。template包含请求地址请求头但是请求头没有数据,targetRequest (template)方法会经过Feign的拦截器 返回一个Request对象,然后再执行http请求获取数据。请求头不包含Q请求中的请求头数据,所以fegin远程调用会丢失请求头。
摘要由CSDN通过智能技术生成

在浏览器发送一个Q请求,请求中原包含请求头headers信息,controller某个A方法接收到Q请求并调用某个B方法。B方法中有Feign远程调用,在执行Feign远程调用其他服务时,会丢失掉原来请求中的请求头信息。

Feign远程调用底层是发送Http请求,而发送请求时会经过Feign的拦截器。Request request = targetRequest(template);template包含请求地址请求头但是请求头没有数据,targetRequest (template)方法会经过Feign的拦截器 返回一个Request对象,然后再执行http请求获取数据。

详细:在B方法Feign远程调用时,会触发ReflectiveFeign类下 Object invoke(Object proxy, Method method, Object[] args)方法,该方法的参数包含服务名称,请求方式(GET)等等,但是请求头信息为空。此方法会调用 dispatch.get(method).invoke(args)方法;来到SynchronousMethodHandler类下的 Object invoke(Object[] argv)方法;Object invoke(Object[] argv)方法会再调用executeAndDecode(template, options)方法;

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值