很多架构师为了鉴权,会把controller带过来的header信息一股脑的利用feign的拦截器带入RequestTemplate,然后方便feign接口鉴权。这时候可能会带入其他的header信息,比如content-type,而有的feign接口是对特定对header信息有要求的,所以调用不通。分析思路: 可以找到SynchronousMethodHandler的源代码,可以利用调用feign接口时候,步入进去到这个class文件final class SynchronousMethodHandler
然后在这个方法设置断点,看看带过来到template是否为多个或者有不一样到内容。
Request targetRequest(RequestTemplate template) {for (RequestInterceptor interceptor : requestInterceptors) {interceptor.apply(template);}return target.apply(new RequestTemplate(template)); }