java - Openshift 重定向服务到 https 丢失用户 IP 地址

标签 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();
 }

最佳答案

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

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

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

关于java - Openshift 重定向服务到 https 丢失用户 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24013341/

相关文章:

jboss7.x - Jboss AS 7.1 中的 Resteasy 客户端抛出 java.lang.ClassNotFoundException : com. sun.ws.rs.ext.RuntimeDelegateImpl

XPath 中带有字符串变量的 Java XPath 语法

java - JBoss 7.1.1 中缺少 Web 应用程序目录

mysql - Orbeon Forms 4.3 不使用 MySQL

java - NoSuchBeanDefinitionException : No qualifying bean of type "XInterceptor"

java - 页面加载后异步 AJAX 返回

java - RequestMappingHandlerMapping registerMapping 未与 RequestBody/HttpEntity 绑定(bind)

java - Spring RabbitMQ 将新队列附加到现有监听器

java - 子项目pom中的父pom版本

java - 如何使用复选框将应用程序静音/取消静音