import javax.servlet.http.HttpServletRequest;
public class IpUtil {
/**
* 获取当前请求的IP地址
* @param request 请求对象
* @return IP地址字符串
*/
public static String getIpAddr(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();
}
return ip;
}
}
getIpAddr 方法:该方法用于获取客户端的 IP 地址。它通过检查多个 HTTP 请求头来确定真实的 IP 地址。x-forwarded-for:通常由代理服务器设置,包含客户端的真实 IP 地址。Proxy-Client-IP 和 WL-Proxy-Client-IP:WebLogic 服务器使用的头部。HTTP_CLIENT_IP 和 HTTP_X_FORWARDED_FOR:其他可能的代理或网关设置的头部。request.getRemoteAddr() 获取直接连接的客户端 IP 地址。这个方法适用于大多数常见的 Web 应用场景,特别是当应用程序部署在反向代理(如 Nginx 或 Apache)后面时。
上一篇:java调用dll动态库
下一篇:java取整
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站