import javax.servlet.http.HttpServletRequest;
public class IpUtil {
/**
* 获取客户端IP地址
* @param request HttpServletRequest对象
* @return 客户端IP地址
*/
public static String getClientIp(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();
}
// 处理多IP的情况(可能有多个代理)
if (ip != null && ip.indexOf(",") > 0) {
ip = ip.split(",")[0];
}
return ip;
}
}
getClientIp(HttpServletRequest request)
方法接收一个 HttpServletRequest
对象作为参数,返回一个字符串类型的客户端 IP 地址。x-forwarded-for
请求头中获取 IP 地址,这是最常见的代理服务器传递客户端真实 IP 的方式。x-forwarded-for
为空或无效,则依次尝试其他常见的 HTTP 请求头,如 Proxy-Client-IP
、WL-Proxy-Client-IP
、HTTP_CLIENT_IP
和 HTTP_X_FORWARDED_FOR
。request.getRemoteAddr()
获取客户端 IP 地址。x-forwarded-for
可能包含多个 IP 地址(例如经过多个代理),此时我们只取第一个 IP 地址作为客户端的真实 IP。上一篇:java转义
下一篇:java删除文件夹下所有文件
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站