OpenFeign遠程調用丟失請求頭問題解決辦法


同步調用

@Configuration
public class FeignConfiguration {

    //feign遠程調用丟失請求頭問題
    @Bean("requestInterceptor")
    public RequestInterceptor requestInterceptor(){
        return template -> {
            ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = attributes.getRequest();
            String cookie = request.getHeader("Cookie");
            template.header("Cookie",cookie);
        };
    }
}

我這里只添加了header中的Cookie,當然也可以遍歷header,把所有的都添加到新的請求。解決辦法跟Gateway丟失請求頭類似。https://www.cnblogs.com/wwjj4811/p/13937694.html

異步調用

當我們使用異步調用openfeign,上述代碼就會報空指針,獲取不到當前的請求。

解決方法如下:

我們先獲取到當前請求,再分享給子線程。

RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
    RequestContextHolder.setRequestAttributes(attributes);
    feign.doService();
}, executor);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM