java获得IP

public String getIp(HttpServletRequest request) { 
2.        String ip= request.getHeader("X-Forwarded-For"); 
3.        if (ip== null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 
4.            ip= request.getHeader("Proxy-Client-IP"); 
5.        if (ip== null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 
6.            ip= request.getHeader("WL-Proxy-Client-IP"); 
7.        if (ip== null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 
8.            ip= request.getHeader("HTTP_CLIENT_IP"); 
9.        if (ip== null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 
10.            ip= request.getHeader("HTTP_X_FORWARDED_FOR"); 
11.        if (ip== null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 
12.            ip= request.getRemoteAddr(); 
13.        if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)){ 
14.            try { 
15.                ip= InetAddress.getLocalHost().getHostAddress(); 
16.            } 
17.            catch (UnknownHostException e) { 
18.                e.printStackTrace(); 
19.            } 
20.        } 
21.    return ip 
22.} 








Java代码 复制代码 收藏代码
1./**
2.     * 获取访问者IP
3.     * 
4.     * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效
5.     * 
6.     * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),
7.     * 如果还不存在则调用Request .getRemoteAddr()。
8.     * 
9.     * @param request
10.     * @return
11.     */ 
12.    public static String getIpAddr(HttpServletRequest request) { 
13.        String ip = request.getHeader("X-Real-IP"); 
14.        if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) { 
15.            return ip; 
16.        } 
17.        ip = request.getHeader("X-Forwarded-For"); 
18.        if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) { 
19.            // 多次反向代理后会有多个IP值,第一个为真实IP。 
20.            int index = ip.indexOf(','); 
21.            if (index != -1) { 
22.                return ip.substring(0, index); 
23.            } else { 
24.                return ip; 
25.            } 
26.        } else { 
27.            return request.getRemoteAddr(); 
28.        } 
29.    } 
您的回应...

相关话题

查看全部

也许你感兴趣

换一批

热门标签

更多
Warning: file_put_contents(/home/data/www/web/cfanz/config/../data/log/db.log): failed to open stream: Permission denied in /home/data/www/web/cfanz/lib/logger/FileLogger.class.php on line 6