HttpRequestUtils.java 832 B

123456789101112131415161718192021222324252627282930
  1. package com.dianping.cat.utils;
  2. import javax.servlet.http.HttpServletRequest;
  3. /**
  4. * 获取客户端实际ip
  5. */
  6. public class HttpRequestUtils {
  7. public static String getAddr(HttpServletRequest request) {
  8. String ip = request.getHeader("X-Real-IP");
  9. if (ip != null && ip.length() != 0 && !"unKnown".equalsIgnoreCase(ip)) {
  10. return ip;
  11. }
  12. ip = request.getHeader("X-Forwarded-For");
  13. if (ip != null && ip.length() != 0 && !"unKnown".equalsIgnoreCase(ip)) {
  14. //多次反向代理后会有多个ip值,第一个ip才是真实ip
  15. int index = ip.indexOf(",");
  16. if (index != -1) {
  17. return ip.substring(0, index);
  18. } else {
  19. return ip;
  20. }
  21. }
  22. return request.getRemoteAddr();
  23. }
  24. }