JAVA獲取客戶端IP

import javax.servlet.http.HttpServletRequest;
import com.tbtech.common.utils.StringUtils;

public final class RequestHelper {
	/* 
	 * 獲取訪問者IP
	 * 在通常狀況下使用Request.getRemoteAddr()便可,可是通過nginx等反向代理軟件後,這個方法會失效。
	 * 本方法先從Header中獲取X-Real-IP,若是不存在再從X-Forwarded-For得到第一個IP(用,分割),* 若是還不存在則調用Request .getRemoteAddr()。
	 * @param request
	 * @return
	 */
	public static String getIpAddr(HttpServletRequest request) {
	     String ip = request.getHeader("X-Forwarded-For");
             if(!StringUtils.isBlank(ip) && !"unKnown".equalsIgnoreCase(ip)){
                 //屢次反向代理後會有多個ip值,第一個ip纔是真實ip
                 int index = ip.indexOf(",");
                 if(index != -1){
                     return ip.substring(0,index);
                 }else{
                     return ip;
                 }
             }
             ip = request.getHeader("X-Real-IP");
       
             //StringUtils.isBlank只是一個判斷非空字符的方法
             if(!StringUtils.isBlank(ip) && !"unKnown".equalsIgnoreCase(ip)){
                 return ip;
             }
             return request.getRemoteAddr();
	}

}

參考博客:http://www.javashuo.com/article/p-xotjhvkq-dg.html
感謝大佬!!!html

.endjava

相關文章
相關標籤/搜索