【问题标题】:Feign/Eureka client not passing X-Forwarded-For headerFeign/Eureka 客户端未传递 X-Forwarded-For 标头
【发布时间】:2016-02-08 15:51:46
【问题描述】:

我使用 Spring boot + Eureka + Feign 客户端将请求从一个发现的服务器转发到另一个服务器,它工作正常。

在我的服务器中,我需要获取原始用户的 IP。

我似乎找不到如何配置 Feign 客户端以自动编辑“X-Forwarded-For”标头,以便能够提取原始用户的 IP 地址。

当我使用 getRemoteAddr() 时,我得到了代理 IP 地址(如预期的那样)。 当试图提取 request.getHeader("X-Forwarded-For") 我总是得到空值。

我应该在哪里添加/配置此功能?

【问题讨论】:

    标签: spring-boot http-headers netflix-eureka netflix-feign


    【解决方案1】:

    您需要添加自己的拦截器,该拦截器将此标头添加到请求中。

    a good example in Feign docs(但在提出这个问题时可能不存在):

    static class ForwardedForInterceptor implements RequestInterceptor {
      @Override public void apply(RequestTemplate template) {
        template.header("X-Forwarded-For", "origin.host.com");
      }
    }
    
    public class Example {
      public static void main(String[] args) {
        Bank bank = Feign.builder()
                     .decoder(accountDecoder)
                     .requestInterceptor(new ForwardedForInterceptor())
                     .target(Bank.class, "https://api.examplebank.com");
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-15
      • 2021-06-08
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2016-01-25
      • 2021-12-06
      • 2020-01-27
      相关资源
      最近更新 更多