获取用户真实ip,过滤多级反向代理

xiaoxiao2021-02-27  159

protected String getip(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();                if(ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")){                    //根据网卡取本机配置的IP                    InetAddress inet=null;                    try {                        inet = InetAddress.getLocalHost();                    } catch (UnknownHostException e) {                        e.printStackTrace();                    }                    ipAddress= inet.getHostAddress();                }            }            //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割            if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15                if(ipAddress.indexOf(",")>0){                    ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));                }            }            return ipAddress; }
转载请注明原文地址: https://www.6miu.com/read-15382.html

最新回复(0)