最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java如何根據(jù)HttpServletRequest獲取IP地址

 更新時(shí)間:2025年03月08日 13:56:34   作者:北極的企鵝88  
文章介紹了幾種代理服務(wù)器轉(zhuǎn)發(fā)服務(wù)請(qǐng)求頭的方法,這些請(qǐng)求頭可能包含真實(shí)IP地址,但并不是所有的代理都會(huì)包括這些請(qǐng)求頭,而且這些IP地址可能被偽造

java根據(jù)HttpServletRequest獲取IP地址

解決辦法:

以下整理了各個(gè)代理服務(wù)器自己開發(fā)的轉(zhuǎn)發(fā)服務(wù)請(qǐng)求頭,這些請(qǐng)求頭都不是標(biāo)準(zhǔn)的http請(qǐng)求頭,不一定所有的代理都會(huì)帶上這些請(qǐng)求頭,所以通過(guò)這方式只能盡可能的獲取到真實(shí)ip,但不能保證一定可以獲取到真實(shí)ip,而且代理服務(wù)器請(qǐng)求頭中獲取的ip是可偽造的。

參數(shù):

  • X-Forwarded-For:Squid 服務(wù)代理
  • Proxy-Client-IP:apache 服務(wù)代理
  • WL-Proxy-Client-IP:weblogic 服務(wù)代理
  • HTTP_CLIENT_IP:有些代理服務(wù)器
  • X-Real-IP:nginx服務(wù)代理

方法一

public static String getIPAddress(HttpServletRequest request) {
    String ip = null;    //X-Forwarded-For:Squid 服務(wù)代理
    String ipAddresses = request.getHeader("X-Forwarded-For");
    if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {        //Proxy-Client-IP:apache 服務(wù)代理
        ipAddresses = request.getHeader("Proxy-Client-IP");
    }
    if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {        //WL-Proxy-Client-IP:weblogic 服務(wù)代理
        ipAddresses = request.getHeader("WL-Proxy-Client-IP");
    }
    if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {        //HTTP_CLIENT_IP:有些代理服務(wù)器
        ipAddresses = request.getHeader("HTTP_CLIENT_IP");
    }
    if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {        //X-Real-IP:nginx服務(wù)代理
        ipAddresses = request.getHeader("X-Real-IP");
    }    //有些網(wǎng)絡(luò)通過(guò)多層代理,那么獲取到的ip就會(huì)有多個(gè),一般都是通過(guò)逗號(hào)(,)分割開來(lái),并且第一個(gè)ip為客戶端的真實(shí)IP
    if (ipAddresses != null && ipAddresses.length() != 0) {
        ip = ipAddresses.split(",")[0];
    }    //還是不能獲取到,最后再通過(guò)request.getRemoteAddr();獲取
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
        ip = request.getRemoteAddr();
    }
    return ip;
}

方法二

public static String getIpAddr(HttpServletRequest request)
    {
        if (request == null)
        {
            return "unknown";
        }
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getHeader("X-Forwarded-For");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getHeader("X-Real-IP");
        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
        {
            ip = request.getRemoteAddr();
        }
        return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : EscapeUtil.clean(ip);
    }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis-Plus工具使用之EntityWrapper解析

    MyBatis-Plus工具使用之EntityWrapper解析

    這篇文章主要介紹了MyBatis-Plus工具使用之EntityWrapper解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot集成MQ的過(guò)程(四種交換機(jī)的實(shí)例)

    SpringBoot集成MQ的過(guò)程(四種交換機(jī)的實(shí)例)

    本文介紹了RabbitMQ中四種交換機(jī)(直連、扇出、主題和頭交換機(jī))的使用方法,包括路由機(jī)制、典型場(chǎng)景和實(shí)現(xiàn)步驟,通過(guò)創(chuàng)建SpringBoot項(xiàng)目并配置交換機(jī)、隊(duì)列和消費(fèi)者,展示了如何發(fā)送和接收消息,每種交換機(jī)的示例代碼和測(cè)試步驟也一并提供,感興趣的朋友一起看看吧
    2025-03-03
  • 基于springboot activiti 配置項(xiàng)解析

    基于springboot activiti 配置項(xiàng)解析

    這篇文章主要介紹了springboot activiti 配置項(xiàng)解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • maven+springboot打成jar包的方法

    maven+springboot打成jar包的方法

    這篇文章主要介紹了maven+springboot打成jar包的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • SpringBoot整合騰訊云COS對(duì)象存儲(chǔ)實(shí)現(xiàn)文件上傳的示例代碼

    SpringBoot整合騰訊云COS對(duì)象存儲(chǔ)實(shí)現(xiàn)文件上傳的示例代碼

    本文主要介紹了SpringBoot整合騰訊云COS對(duì)象存儲(chǔ)實(shí)現(xiàn)文件上傳的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • java并發(fā)包中CountDownLatch和線程池的使用詳解

    java并發(fā)包中CountDownLatch和線程池的使用詳解

    這篇文章主要介紹了java并發(fā)包中CountDownLatch和線程池的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • java如何在項(xiàng)目中實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能

    java如何在項(xiàng)目中實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能

    這篇文章主要介紹了java如何在項(xiàng)目中實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出功能的相關(guān)資料,EasyExcel是一個(gè)基于Apache?POI開發(fā)的開源Java庫(kù),用于簡(jiǎn)化Excel文件的讀寫操作,文中將用法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Java后端學(xué)習(xí)精華之TCP通信傳輸協(xié)議詳解

    Java后端學(xué)習(xí)精華之TCP通信傳輸協(xié)議詳解

    TCP/IP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它會(huì)保證數(shù)據(jù)不丟包、不亂序。TCP全名是Transmission Control Protocol,它是位于網(wǎng)絡(luò)OSI模型中的第四層
    2021-09-09
  • java 發(fā)送http和https請(qǐng)求的實(shí)例

    java 發(fā)送http和https請(qǐng)求的實(shí)例

    下面小編就為大家分享一篇java 發(fā)送http和https請(qǐng)求的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Java實(shí)現(xiàn)簡(jiǎn)單酒店管理系統(tǒng)

    Java實(shí)現(xiàn)簡(jiǎn)單酒店管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論

桦川县| 墨江| 德钦县| 舞钢市| 北辰区| 孝昌县| 和平县| 长顺县| 雅江县| 宣城市| 慈利县| 鹰潭市| 酉阳| 渑池县| 双柏县| 石台县| 内丘县| 和硕县| 龙江县| 江西省| 黄大仙区| 吕梁市| 莲花县| 青岛市| 阿瓦提县| 郓城县| 东阳市| 泰兴市| 葫芦岛市| 红原县| 烟台市| 信丰县| 大田县| 东港市| 宜宾市| 醴陵市| 老河口市| 石阡县| 驻马店市| 澄迈县| 张家口市|