Openshift重定向服务到https会丢失用户的IP地址

时间:2014-06-03 10:55:17

标签: java spring-mvc jboss7.x openshift

嗨,我按照知识库中的建议将我的所有流量重定向到https:https://openshift.redhat.com/community/kb/kb-e1044-how-to-redirect-traffic-to-https

然而,在执行此操作后,我无法获取用户的IP地址,而是获取重定向的服务器的IP地址:

以下是Java spring MVC特定实现的示例。 currentViewedIP成为重定向到HTTPS而不是用户IP的服务器。

 @RequestMapping(value = "/payment/", method = RequestMethod.GET)
  public String newBracqet(Model model, HttpServletRequest request) {
    String currentViewedIP = request.getRemoteAddr();
 }

1 个答案:

答案 0 :(得分:1)

如果用户位于代理服务器后面或通过负载均衡器访问您的Web服务器(例如,在云托管中),上面的代码将获取代理服务器或负载均衡器服务器的IP地址,而不是原始IP地址客户。

要解决此问题,您应该获取请求的HTTP标头“X-Forwarded-For(XFF)”的IP地址。

  //is client behind something?
  String ipAddress = request.getHeader("X-FORWARDED-FOR");  
  if (ipAddress == null) {  
     ipAddress = request.getRemoteAddr();  
  }