import javax.servlet.http.HttpServletRequest;
public class IpUtil {
    /**
     * 获取请求的IP地址
     * 
     * @param request HTTP 请求对象
     * @return 请求的IP地址
     */
    public static String getIpAddr(HttpServletRequest request) {
        String ipAddress = null;
        try {
            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(","));
                }
            }
        } catch (Exception e) {
            ipAddress = "";
        }
        return ipAddress;
    }
}getIpAddr 方法用于从 HttpServletRequest 对象中获取客户端的 IP 地址。request 是一个 HttpServletRequest 对象,包含了客户端的请求信息。x-forwarded-for 中获取 IP 地址,这个头通常由代理服务器设置。x-forwarded-for 为空或无效(如 "unknown"),则继续尝试从 Proxy-Client-IP 和 WL-Proxy-Client-IP 头中获取。request.getRemoteAddr() 获取客户端的 IP 地址。下一篇:java urldecode
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站