Spring MVC 获取请求的IP通用方式和获取服务器IP

获取远程请求的ip地址:
private String getRequestIP(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("X-Real-IP");
    }
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
    }
    return ip;
}

获取服务器的ip地址:

private String getServerIP(HttpServletRequest request) {
	String serverIp = null;
    Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
    if (netInterfaces != null) {
	    while (netInterfaces.hasMoreElements()) {
	        NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
	        Enumeration addresses = ni.getInetAddresses();
	        while (addresses.hasMoreElements()) {
	            InetAddress ip = addresses.nextElement();
	            serverIp = ip.getHostAddress();
	            if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {
	                serverIp = ip.getHostAddress();
	                break;
	            } else {
	                serverIp = null;
	            }
	            if (serverIp == null) {
	                if ((ip != null && ip instanceof Inet4Address) && !ip.getHostAddress().equals("127.0.0.1")) {
	                    serverIp = ip.getHostAddress();
	                    break;
	                }
	            }
	        }
	        if (serverIp != null) {
	            break;
	        }
	    }
	}
    return serverIp;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值