Feign/Eureka客户端无法传递X-Forwarded-For头信息。

7
我使用Spring Boot + Eureka + Feign客户端将一个被发现的服务器的请求转发到另一个服务器,并且它能够正常工作。
在我的服务器中,我需要获取原始用户的IP地址。
我无法找到如何配置Feign客户端自动编辑“X-Forwarded-For”标头,以便能够提取原始用户的IP地址。
当我使用getRemoteAddr()时,我会得到代理IP地址(预期结果)。 尝试提取request.getHeader("X-Forwarded-For")时,我总是收到null。
我应该在哪里添加/配置此功能?
1个回答

0

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

在Feign文档中有一个很好的例子(但可能在提出这个问题时还不存在):

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");
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接