JavaWeb項目服務端獲取客戶端的IP地址


一般情況下直接使用HttpServletRequest對象的getRemoteAddr()方法就能獲取到客戶端IP地址了。

/**
 * 獲取客戶端IP地址 
 */
public String getClientIP(HttpServletRequest request){
    return request.getRemoteAddr();  
}

 實際情況下項目的開發都會比較復雜,比如會使用到反向代理,此時經過代理后客戶端和服務端(真正處理業務的服務端)之間就會增加了一個服務端(分配請求的服務端),當

服務端(真正處理業務的服務端)使用HttpServletRequest對象的getRemoteAddr()方法去獲取客戶端的IP時,得到的IP會是服務端(分配請求的服務端)的IP,而非客戶端的IP。

    所以此時就要使用HttpServletRequest對象的getHeader()方法來獲取真實的客戶端IP地址了

/**
 * 獲取客戶端IP地址 
 */
public String getClientIP(HttpServletRequest request){
    if(request.getHeader("x-forwarded-for") == null){
        return request.getRemoteAddr();
    }
    
    //x-forwarded-for是
    return request.getHeader("x-forwarded-for");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM