1. 程式人生 > >Java獲取ip地址

Java獲取ip地址

uid 字符串 獲取ip put CA AS except 代理軟件 cli

package utils;

import com.alibaba.druid.util.StringUtils;
import javax.servlet.http.HttpServletRequest;

/**
 * IP地址
 * 
 * @author zengwei
 * @email [email protected]
 * @date 2018-03-23 22:02
 */
public class IPUtils {

  /**
   * 獲取IP地址
   * 
   * 使用Nginx等反向代理軟件, 則不能通過request.getRemoteAddr()獲取IP地址
   * 如果使用了多級反向代理的話,X-Forwarded-For的值並不止一個,而是一串IP地址,
   * X-Forwarded-For中第一個非unknown的有效IP字符串,則為真實IP地址
   */
  public static String getIpAddr(HttpServletRequest request) {
    String ip = null;
    try {
      ip = request.getHeader("x-forwarded-for");
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("Proxy-Client-IP");
      }
      if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("WL-Proxy-Client-IP");
      }
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("HTTP_CLIENT_IP");
      }
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("HTTP_X_FORWARDED_FOR");
      }
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
      }
    } catch (Exception e) {

    }
    return ip;
  }

}
  

  

Java獲取ip地址