我在尝试从HttpServletRequest中获取IP时遇到了问题,请先看我的代码:
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
我的问题是,如果使用以下URL打开应用程序(我的PC的URL为18.111,服务器部署在本地主机上)“https://192.168.18.111:8443/test/main.html”,我可以通过以上代码获取正确的URL。但是,如果使用“https://localhost:8443/test/main.html”打开,则会返回类似“0.1.0.1....”的内容。为什么这个函数对“localhost”无效?或者有没有更好的方法从HttpServletRequest获取IP地址?