很多架構師為了鑒權,會把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)); }