package com.kidgrow.common.utils; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* * @Description:
* @Project:
* @CreateDate: Created in 2020/2/21 13:34
* @Author: liuke */ @Slf4j public class AddrUtil { private final static String UNKNOWN_STR = "unknown"; /** * 获取客户端IP地址 */ public static String getRemoteAddr(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); if (isEmptyIP(ip)) { ip = request.getHeader("Proxy-Client-IP"); if (isEmptyIP(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); if (isEmptyIP(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); if (isEmptyIP(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); if (isEmptyIP(ip)) { ip = request.getRemoteAddr(); if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) { // 根据网卡取本机配置的IP ip = getLocalAddr(); } } } } } } else if (ip.length() > 15) { String[] ips = ip.split(","); for (int index = 0; index < ips.length; index++) { String strIp = ips[index]; if (!isEmptyIP(ip)) { ip = strIp; break; } } } return ip; } private static boolean isEmptyIP(String ip) { if (StrUtil.isEmpty(ip) || UNKNOWN_STR.equalsIgnoreCase(ip)) { return true; } return false; } /** * 获取本机的IP地址 */ public static String getLocalAddr() { try { return InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) { log.error("InetAddress.getLocalHost()-error", e); } return ""; } }