java 獲取客戶端IP

通過下面的代碼獲取不到ip的話,就得看看服務器的配置了。

梳理網絡請求的流程,排查ip在哪丟失的,爲什麼沒有在網關獲取到這個客戶端ip。有可能是雲服務器管理廠商沒有放開獲取客戶端ip

 public String getIP(HttpServletRequest request) {
        log.error("X-Real-IP---" + request.getHeader("X-Real-IP"));
        log.error("X-Requested-For---" + request.getHeader("X-Requested-For"));
        log.error("x-forwarded-for---" + request.getHeader("x-forwarded-for"));
        log.error("X-Forwarded-For---" + request.getHeader("X-Forwarded-For"));
        log.error("Proxy-Client-IP--" + request.getHeader("Proxy-Client-IP"));
        log.error("WL-Proxy-Client-IP---" + request.getHeader("WL-Proxy-Client-IP"));
        log.error("HTTP_CLIENT_IP---" + request.getHeader("HTTP_CLIENT_IP"));
        log.error("HTTP_X_FORWARDED_FOR----" + request.getHeader("HTTP_X_FORWARDED_FOR"));
        log.error("request.getRemoteAddr()----" + request.getRemoteAddr());

        String ip = request.getHeader("x-forwarded-for");
        if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Forwarded-For");
        }
        if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (StringUtils.isEmpty(ip) || UNKNOWN.equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Real-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();
        }
        return StringUtils.isEmpty(ip) ? null : ip.split(",")[0];
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章