java后台通过http request获取用户IP工具类

该工具类通过request请求,获取用户的IP地址

public class ClientIp {
    private static Logger logger = LoggerFactory.getLogger(ClientIp.class);

    /**
     * @desc 获取真实IP
     * 获取真实IP
     * @param request HttpServletRequest请求对象
     * @return java.lang.String   返回Ip地址
     */
    public static String getClientIp(HttpServletRequest request) {
        String ip = request.getHeader("X-Forwarded-For");
        if (ip != null) {
            if (!ip.isEmpty() && !Constant.UNKNOWN.equalsIgnoreCase(ip)) {
                int index = ip.indexOf(",");
                if (index != -1) {
                    return ip.substring(0, index);
                } else {
                    return ip;
                }
            }
        }
        ip = request.getHeader("X-Real-IP");
        if (ip != null) {
            if (!ip.isEmpty() && !Constant.UNKNOWN.equalsIgnoreCase(ip)) {
                return ip;
            }
        }
        ip = request.getHeader("Proxy-Client-IP");
        if (ip != null) {
            if (!ip.isEmpty() && !Constant.UNKNOWN.equalsIgnoreCase(ip)) {
                return ip;
            }
        }
        ip = request.getHeader("WL-Proxy-Client-IP");
        if (ip != null) {
            if (!ip.isEmpty() && !Constant.UNKNOWN.equalsIgnoreCase(ip)) {
                return ip;
            }
        }
        ip = request.getRemoteAddr();
        return Constant.ERROR_IP.equals(ip) ? Constant.LOCAL_IP : ip;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42625033/article/details/86489313