我使用Spring boot + Eureka + Feign客户端将请求从一个发现的服务器转发到另一个服务器,并且工作正常。
在我的服务器中,我需要获取原始用户的IP。
我似乎无法找到如何配置Feign客户端以自动编辑X-Forwarded-For'标题,以便我能够提取原始用户的IP地址。
当我使用getRemoteAddr()时,我得到了代理IP地址(正如预期的那样)。 当试图提取request.getHeader(" X-Forwarded-For")时,我总是得到null。
我应该在哪里添加/配置此功能?
答案 0 :(得分:0)
您需要添加自己的拦截器,该拦截器会将此标头添加到请求中。
有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");
}
}