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

发布时间:2024年01月01日

在浏览器发送一个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)方法;

文章来源:https://blog.csdn.net/ningxiaobai456/article/details/135326298
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。