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. }
java获得IP
猜你喜欢
转载自weitao1026.iteye.com/blog/2266137
今日推荐
周排行