JAVA 获取Http请求中实际IP地址
上代码:
/**
* 获取IP
* @param request
* @return
*/
public static String getIpAddress(HttpServletRequest request) {
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();
}
if (ip != null) {
//对于通过多个代理的情况,最后IP为客户端真实IP,多个IP按照','分割
int position = ip.lastIndexOf(",");
if (position > 0) {
ip = ip.substring(position+1);
}
}
return ip;
}
Java抓取HTTP请求中的真实IP地址:全面解析与代码实例
本文详细介绍如何在Java应用中获取HttpServletRequest中的实际IP地址,针对常见的代理和头信息进行逐层排查,确保获取客户端的真实IP。
251

被折叠的 条评论
为什么被折叠?



