Java获取客户端IP地址

﹏ヽ暗。殇╰゛Y 2023-09-23 22:02 94阅读 0赞
  1. /**
  2. * 获取客户端登录的 IP 地址
  3. **/
  4. public class IPUtil {
  5. public static String getIPAddress(HttpServletRequest request) {
  6. String ip = null;
  7. // X-Forwarded-For:Squid 服务代理
  8. String ipAddresses = request.getHeader("X-Forwarded-For");
  9. if (ipAddresses == null || ipAddresses.length() == 0
  10. || "unknown".equalsIgnoreCase(ipAddresses)) {
  11. //Proxy-Client-IP:apache 服务代理
  12. ipAddresses = request.getHeader("Proxy-Client-IP");
  13. }
  14. if (ipAddresses == null || ipAddresses.length() == 0
  15. || "unknown".equalsIgnoreCase(ipAddresses)) {
  16. // WL-Proxy-Client-IP:weblogic 服务代理
  17. ipAddresses = request.getHeader("WL-Proxy-Client-IP");
  18. }
  19. if (ipAddresses == null || ipAddresses.length() == 0
  20. || "unknown".equalsIgnoreCase(ipAddresses)) {
  21. // HTTP_CLIENT_IP:有些代理服务器
  22. ipAddresses = request.getHeader("HTTP_CLIENT_IP");
  23. }
  24. if (ipAddresses == null || ipAddresses.length() == 0
  25. || "unknown".equalsIgnoreCase(ipAddresses)) {
  26. // X-Real-IP:nginx服务代理
  27. ipAddresses = request.getHeader("X-Real-IP");
  28. }
  29. // 有些网络通过多层代理,那么获取到的ip就会有多个,一般都是通过逗号(,)分割开来,
  30. // 并且第一个ip为客户端的真实IP
  31. if (ipAddresses != null && ipAddresses.length() != 0) {
  32. ip = ipAddresses.split(",")[0];
  33. }
  34. // 还是不能获取到,最后再通过request.getRemoteAddr();获取
  35. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
  36. ip = request.getRemoteAddr();
  37. }
  38. return ip.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;
  39. }
  40. }

发表评论

表情:
评论列表 (有 0 条评论,94人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JAVA获取客户IP地址

    场景:需要服务端获取到客户端得ip,然后塞到请求参数中。 自己整理了下这两种获取客户端IP得方法。目前自己在使用得是第二种。 1. 第一种方法