嗨,我按照知识库中的建议将我的所有流量重定向到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();
}
答案 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();
}