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

基于request獲取訪問者真實IP代碼示例

 更新時間:2020年10月15日 15:33:03   作者:賈小仙  
這篇文章主要介紹了基于request獲取訪問者真實IP代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

在JSP里,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟件就不能獲取到客戶端的真實IP地址了。

如果使用了反向代理軟件,將http://192.168.1.110:2046/ 的URL反向代理為http://www.xxx.com/ 的URL時,用request.getRemoteAddr()方法獲取的IP地址是:127.0.0.1 或 192.168.1.110,而并不是客戶端的真實IP。

經(jīng)過代理以后,由于在客戶端和服務(wù)之間增加了中間層,因此服務(wù)器無法直接拿到客戶端的IP,服務(wù)器端應(yīng)用也無法直接通過轉(zhuǎn)發(fā)請求的地址返回給客戶端。但是在轉(zhuǎn)發(fā)請求的HTTP頭信息中,增加了X-FORWARDED-FOR信息。用以跟蹤原有的客戶端IP地址和原來客戶端請求的服務(wù)器地址。當(dāng)我們訪問http://www.xxx.com/index.jsp/ 時,其實并不是我們?yōu)g覽器真正訪問到了服務(wù)器上的index.jsp文件,而是先由代理服務(wù)器去訪問http://192.168.1.110:2046/index.jsp ,代理服務(wù)器再將訪問到的結(jié)果返回給我們的瀏覽器,因為是代理服務(wù)器去訪問index.jsp的,所以index.jsp中通過request.getRemoteAddr()的方法獲取的IP實際上是代理服務(wù)器的地址,并不是客戶端的IP地址。

于是可得出獲得客戶端真實IP地址的方法一:

public String getRemortIP(HttpServletRequest request) {
 if (request.getHeader("x-forwarded-for") == null) {
  return request.getRemoteAddr();
 }
 return request.getHeader("x-forwarded-for");
 }

可是當(dāng)我訪問http://www.xxx.com/index.jsp/ 時,返回的IP地址始終是unknown,也并不是如上所示的127.0.0.1 或 192.168.1.110了,而我訪問http://192.168.1.110:2046/index.jsp 時,則能返回客戶端的真實IP地址,寫了個方法去驗證。原因出在了Squid上。squid.conf 的配制文件 forwarded_for 項默認(rèn)是為on,如果 forwarded_for 設(shè)成了 off  則:X-Forwarded-For: unknown

于是可得出獲得客戶端真實IP地址的方法二:

   public String getIpAddr(HttpServletRequest request) {
     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("WL-Proxy-Client-IP");
     }
     if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
      ip = request.getRemoteAddr();
    }
    return ip;
  }

  可是,如果通過了多級反向代理的話,X-Forwarded-For的值并不止一個,而是一串Ip值,究竟哪個才是真正的用戶端的真實IP呢?

  答案是取X-Forwarded-For中第一個非unknown的有效IP字符串。

  如:

  X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100

  用戶真實IP為: 192.168.1.110

說明:按這種方法不一定100%準(zhǔn),網(wǎng)上很多人提到要準(zhǔn)確的話必須做一個客戶端空間,如applet。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis如何進(jìn)行雙重foreach循環(huán)

    MyBatis如何進(jìn)行雙重foreach循環(huán)

    這篇文章主要介紹了MyBatis如何進(jìn)行雙重foreach循環(huán),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 使用Java實現(xiàn)通用樹形結(jié)構(gòu)構(gòu)建工具類

    使用Java實現(xiàn)通用樹形結(jié)構(gòu)構(gòu)建工具類

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實現(xiàn)通用樹形結(jié)構(gòu)構(gòu)建工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • java實現(xiàn)簡單的計算器類實例

    java實現(xiàn)簡單的計算器類實例

    這篇文章主要介紹了java實現(xiàn)簡單的計算器類,涉及java針對鍵盤監(jiān)聽及數(shù)字運算的處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Java發(fā)送郵件javax.mail的實現(xiàn)方法

    Java發(fā)送郵件javax.mail的實現(xiàn)方法

    這篇文章主要為大家介紹了Java發(fā)送郵件javax.mail的實現(xiàn)方法,具有一定的參考價值,代碼都有詳細(xì)的注釋,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 兩種java實現(xiàn)二分查找的方式

    兩種java實現(xiàn)二分查找的方式

    這篇文章主要給大家分享的是java實現(xiàn)二分查找的方式,二分查找是一種查詢效率非常高的查找算法。又稱折半查找。下面文章我們介紹了兩種方法,需要的朋友可以參考一下
    2021-09-09
  • Spring?Security如何實現(xiàn)升級密碼加密方式詳解

    Spring?Security如何實現(xiàn)升級密碼加密方式詳解

    這篇文章主要為大家介紹了Spring?Security實現(xiàn)升級密碼加密方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Java利用字符流輕松處理文本數(shù)據(jù)

    Java利用字符流輕松處理文本數(shù)據(jù)

    在Java中,文本數(shù)據(jù)是經(jīng)常處理的一種數(shù)據(jù)類型,而字符流就是用來處理文本數(shù)據(jù)的一種流,下面就為大家介紹一下Java字符流的基本概念、常用類和方法,以及如何使用字符流來讀寫文件吧
    2023-09-09
  • Java設(shè)計模式之備忘錄模式

    Java設(shè)計模式之備忘錄模式

    這篇文章介紹了Java設(shè)計模式之備忘錄模式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • Intellj Idea中的maven工程Java文件顏色不對,未被識別的解決

    Intellj Idea中的maven工程Java文件顏色不對,未被識別的解決

    這篇文章主要介紹了Intellj Idea中的maven工程Java文件顏色不對,未被識別的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • maven-maven使用-P參數(shù)打包不同環(huán)境問題

    maven-maven使用-P參數(shù)打包不同環(huán)境問題

    這篇文章主要介紹了maven-maven使用-P參數(shù)打包不同環(huán)境問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

克拉玛依市| 麻江县| 方城县| 铁力市| 黑龙江省| 垦利县| 靖远县| 阜康市| 永寿县| 巴东县| 南康市| 彰化县| 五家渠市| 武定县| 德钦县| 屏南县| 枣庄市| 景泰县| 渝北区| 土默特左旗| 延津县| 潜江市| 六枝特区| 绥宁县| 广元市| 长宁区| 苏州市| 磴口县| 赞皇县| 北票市| 寿阳县| 佛坪县| 五家渠市| 平南县| 哈密市| 巴青县| 江陵县| 晋城| 汝南县| 巴彦淖尔市| 荣成市|