中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Java獲取客戶端真實(shí)IP地址過(guò)程解析

這篇文章主要介紹了Java獲取客戶端真實(shí)IP地址過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

10年積累的成都網(wǎng)站制作、成都做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有沙依巴克免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

業(yè)務(wù)背景

客戶端訪問(wèn)經(jīng)過(guò)轉(zhuǎn)發(fā),IP將會(huì)追加在其后并以逗號(hào)隔開(kāi)。最終準(zhǔn)確的客戶端信息為:

相關(guān)請(qǐng)求頭的解釋:

X-Forwarded-For 記錄一個(gè)請(qǐng)求從客戶端出發(fā)到目標(biāo)服務(wù)器過(guò)程中經(jīng)歷的代理,或者負(fù)載平衡設(shè)備的IP。這是由緩存代理軟件 Squid 引入,用來(lái)表示 HTTP 請(qǐng)求端真實(shí) IP,現(xiàn)在已經(jīng)成為事實(shí)上的標(biāo)準(zhǔn),被各大 HTTP 代理、負(fù)載均衡等轉(zhuǎn)發(fā)服務(wù)廣泛使用,并被寫(xiě)入 RFC 7239(Forwarded HTTP Extension)標(biāo)準(zhǔn)之中。格式為X-Forwarded-For:client1,proxy1,proxy2,一般情況下,第一個(gè)ip為客戶端真實(shí)ip,后面的為經(jīng)過(guò)的代理服務(wù)器的ip?,F(xiàn)在大部分的代理都會(huì)加上這個(gè)請(qǐng)求頭。

Proxy-Client-IP/WL- Proxy-Client-IP 這個(gè)一般是經(jīng)過(guò)apache http服務(wù)器的請(qǐng)求才會(huì)有,用apache http做代理時(shí)一般會(huì)加上Proxy-Client-IP請(qǐng)求頭,而WL-Proxy-Client-IP是他的weblogic插件加上的頭。

HTTP_CLIENT_IP 有些代理服務(wù)器會(huì)加上此請(qǐng)求頭。

X-Real-IP nginx代理一般會(huì)加上此請(qǐng)求頭。

獲取客戶端真實(shí)IP地址

源碼:

/**
 * 獲取客戶端的IP地址<br/>
 * 注意本地測(cè)試訪問(wèn)項(xiàng)目地址時(shí),瀏覽器請(qǐng)求不要用 localhost,請(qǐng)用本機(jī)IP;否則,取不到 IP
 *
 * @author east7
 * @date 2019年12月03日
 * @return String 真實(shí)IP地址
 */
public static String getClientIpAddress(HttpServletRequest request) {
  // 獲取請(qǐng)求主機(jī)IP地址,如果通過(guò)代理進(jìn)來(lái),則透過(guò)防火墻獲取真實(shí)IP地址
  String headerName = "x-forwarded-for";
  String ip = request.getHeader(headerName);
  if (null != ip && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
    // 多次反向代理后會(huì)有多個(gè)IP值,第一個(gè)IP才是真實(shí)IP,它們按照英文逗號(hào)','分割
    if (ip.indexOf(",") != -1) {
      ip = ip.split(",")[0];
    }
  }
  if (checkIp(ip)) {
    headerName = "Proxy-Client-IP";
    ip = request.getHeader(headerName);
  }
  if (checkIp(ip)) {
    headerName = "WL-Proxy-Client-IP";
    ip = request.getHeader(headerName);
  }
  if (checkIp(ip)) {
    headerName = "HTTP_CLIENT_IP";
    ip = request.getHeader(headerName);
  }
  if (checkIp(ip)) {
    headerName = "HTTP_X_FORWARDED_FOR";
    ip = request.getHeader(headerName);
  }
  if (checkIp(ip)) {
    headerName = "X-Real-IP";
    ip = request.getHeader(headerName);
  }
  if (checkIp(ip)) {
    headerName = "remote addr";
    ip = request.getRemoteAddr();
    // 127.0.0.1 ipv4, 0:0:0:0:0:0:0:1 ipv6
    if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {
      //根據(jù)網(wǎng)卡取本機(jī)配置的IP
      InetAddress inet = null;
      try {
        inet = InetAddress.getLocalHost();
      } catch (UnknownHostException e) {
        e.printStackTrace();
      }
      ip = inet.getHostAddress();
    }
  }
  logger.info("getClientIp IP is " + ip + ", headerName = " + headerName);
  return ip;
}
private static boolean checkIp(String ip) {
  if (null == ip || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    return true;
  }
  return false;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)頁(yè)標(biāo)題:Java獲取客戶端真實(shí)IP地址過(guò)程解析
URL標(biāo)題:http://www.rwnh.cn/article4/jihooe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站導(dǎo)航、ChatGPT、服務(wù)器托管、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

猜你還喜歡下面的內(nèi)容

成都網(wǎng)站建設(shè)公司

建站公司知識(shí)

各行業(yè)網(wǎng)站

莱芜市| 大名县| 雅江县| 临潭县| 吉首市| 大丰市| 合肥市| 廉江市| 石嘴山市| 博白县| 阜平县| 灵武市| 芒康县| 霍林郭勒市| 望江县| 天津市| 读书| 大埔区| 九龙坡区| 呼伦贝尔市| 万州区| 儋州市| 吴忠市| 托克托县| 南溪县| 社会| 凌源市| 岳西县| 图们市| 东丽区| 临澧县| 江永县| 北辰区| 华容县| 安国市| 武邑县| 达州市| 丰台区| 漳州市| 娄底市| 乐业县|