1. 程式人生 > >獲取客戶端ip的方式(適用於公網與區域網)

獲取客戶端ip的方式(適用於公網與區域網)

public class IPTool {


/** 
* 獲取訪問使用者的客戶端IP(適用於公網與區域網). 
*/  
public static final String getIpAddr(final HttpServletRequest request)  
       throws Exception {  
   if (request == null) {  
       throw (new Exception("getIpAddr method HttpServletRequest Object is null"));  
   }  
   String ipString = request.getHeader("x-forwarded-for");  
   if (StringUtils.isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) {  
       ipString = request.getHeader("Proxy-Client-IP");  
   }  
   if (StringUtils.isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) {  
       ipString = request.getHeader("WL-Proxy-Client-IP");  
   }  
   if (StringUtils.isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) {  
       ipString = request.getRemoteAddr();  
   }  
 
   // 多個路由時,取第一個非unknown的ip  
   final String[] arr = ipString.split(",");  
   for (final String str : arr) {  
       if (!"unknown".equalsIgnoreCase(str)) {  
           ipString = str;  
           break;  
       }  
   }  
 
   return ipString;  
}  
}