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

但是,在执行此后,IAM无法获取用户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标题“X-Forwarded-for(XFF)”的IP地址。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top