欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

解決辦法:

以下整理了各個代理服務(wù)器自己開發(fā)的轉(zhuǎn)發(fā)服務(wù)請求頭,這些請求頭都不是標(biāo)準(zhǔn)的http請求頭,不一定所有的代理都會帶上這些請求頭,所以通過這方式只能盡可能的獲取到真實ip,但不能保證一定可以獲取到真實ip,而且代理服務(wù)器請求頭中獲取的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ò)通過多層代理,那么獲取到的ip就會有多個,一般都是通過逗號(,)分割開來,并且第一個ip為客戶端的真實IP
    if (ipAddresses != null && ipAddresses.length() != 0) {
        ip = ipAddresses.split(",")[0];
    }    //還是不能獲取到,最后再通過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é)

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

相關(guān)文章

  • Java實現(xiàn)七牛云文件圖片上傳下載

    Java實現(xiàn)七牛云文件圖片上傳下載

    本文主要介紹了Java實現(xiàn)七牛云文件圖片上傳下載,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot請求發(fā)送與信息響應(yīng)匹配實現(xiàn)方法介紹

    SpringBoot請求發(fā)送與信息響應(yīng)匹配實現(xiàn)方法介紹

    這篇文章主要介紹了SpringBoot請求發(fā)送與信息響應(yīng)匹配實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • WebUploader客戶端批量上傳圖片 后臺使用springMVC

    WebUploader客戶端批量上傳圖片 后臺使用springMVC

    這篇文章主要為大家詳細(xì)介紹了WebUploader客戶端批量上傳圖片,后臺使用springMVC接收實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 在java代碼中獲取JVM參數(shù)的方法

    在java代碼中獲取JVM參數(shù)的方法

    下面小編就為大家?guī)硪黄趈ava代碼中獲取JVM參數(shù)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Java簡單計時的實現(xiàn)案例(可以用來限時循環(huán))

    Java簡單計時的實現(xiàn)案例(可以用來限時循環(huán))

    這篇文章主要介紹了Java簡單計時的實現(xiàn)案例(可以用來限時循環(huán)),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • java控制臺打印本月的日歷

    java控制臺打印本月的日歷

    這篇文章主要為大家詳細(xì)介紹了java控制臺打印本月的日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 一文梳理Java超大型文件讀取的18種方法和性能

    一文梳理Java超大型文件讀取的18種方法和性能

    這篇文章主要為大家詳細(xì)介紹了Java中超大型文件讀取的18種方法和性能對比,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • SpringBoot JPA使用配置過程詳解

    SpringBoot JPA使用配置過程詳解

    這篇文章主要介紹了SpringBoot JPA使用配置過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Java異常日志堆棧丟失的原因與排查

    Java異常日志堆棧丟失的原因與排查

    這篇文章主要給大家介紹了關(guān)于Java異常日志堆棧丟失的原因與排查的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java遍歷Map對象的四種方式

    Java遍歷Map對象的四種方式

    本文給大家介紹java遍歷map對象的四種方式,對java中遍歷map感興趣的朋友可以一起了解了解
    2015-10-10

最新評論