WebUtil.java 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package com.fdkankan.gateway.util;
  2. import cn.hutool.core.util.StrUtil;
  3. import org.springframework.http.HttpHeaders;
  4. import org.springframework.http.server.reactive.ServerHttpRequest;
  5. public class WebUtil {
  6. private final static String UNKNOWN = "unknown";
  7. /**
  8. * 获取客户端请求终端地址
  9. * @param request 客户端请求request
  10. * @return 终端ip地址
  11. */
  12. public static String getIpAddress(ServerHttpRequest request) {
  13. HttpHeaders headers = request.getHeaders();
  14. String ip = headers.getFirst("X-Forwarded-For");
  15. if(StrUtil.isNotBlank(ip) && UNKNOWN.equalsIgnoreCase(ip)){
  16. if(ip.indexOf(",") != -1){
  17. ip = ip.split(",")[0];
  18. return ip;
  19. }
  20. }
  21. ip = headers.getFirst("Proxy-Client-IP");
  22. if(StrUtil.isNotBlank(ip)) return ip;
  23. ip = headers.getFirst("WL-Proxy-Client-IP");
  24. if(StrUtil.isNotBlank(ip)) return ip;
  25. ip = headers.getFirst("HTTP-CLIENT-IP");
  26. if(StrUtil.isNotBlank(ip)) return ip;
  27. ip = headers.getFirst("HTTP-X-FORWARDED-FOR");
  28. if(StrUtil.isNotBlank(ip)) return ip;
  29. ip = headers.getFirst("X-Real-IP");
  30. if(StrUtil.isNotBlank(ip)) return ip;
  31. ip = request.getRemoteAddress().getAddress().getHostAddress();
  32. return ip;
  33. }
  34. }