您好,我按照知识库中的建议将所有流量重定向到 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/