Feign远程调用丢失请求头问题处理
2024-01-01 20:10:57
在浏览器发送一个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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!