import javax.servlet.http.HttpServletRequest;
public class IpUtil {
/**
* 获取请求的IP地址
* @param request HttpServletRequest对象
* @return 请求的IP地址
*/
public static String getIpAddr(HttpServletRequest request) {
String ipAddress = request.getHeader("x-forwarded-for");
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
}
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if (ipAddress != null && ipAddress.length() > 15) {
if (ipAddress.indexOf(",") > 0) {
ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
}
}
return ipAddress;
}
}
getIpAddr
方法用于从 HttpServletRequest
对象中获取客户端的真实 IP 地址。x-forwarded-for
头信息中获取 IP 地址。这个头信息通常由代理服务器设置,包含了客户端的真实 IP 地址。x-forwarded-for
头信息为空或无效(例如值为 "unknown"),则继续尝试从其他常见的代理头信息 (Proxy-Client-IP
和 WL-Proxy-Client-IP
) 中获取 IP 地址。request.getRemoteAddr()
获取 IP 地址。上一篇:protobuf java
下一篇:java 数组定义
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站