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

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

 更新時間:2015年10月02日 12:40:05   投稿:lijiao  
這篇文章主要介紹了JSP如何獲取客戶端真實(shí)IP地址,需要的朋友可以參考下

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

如果使用了反向代理軟件,將http://192.168.1.110:3306/ 的URL反向代理為http://www.8888.com/ 的URL時,用request.getRemoteAddr()方法獲取的IP地址是:127.0.0.1 或 192.168.1.110,而并不是客戶端的真實(shí)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.8888.com/index.jsp/ 時,其實(shí)并不是我們?yōu)g覽器真正訪問到了服務(wù)器上的index.jsp文件,而是先由代理服務(wù)器去訪問http://192.168.1.110:3306/index.jsp ,代理服務(wù)器再將訪問到的結(jié)果返回給我們的瀏覽器,因?yàn)槭谴矸?wù)器去訪問index.jsp的,所以index.jsp中通過request.getRemoteAddr()的方法獲取的IP實(shí)際上是代理服務(wù)器的地址,并不是客戶端的IP地址。

于是可得出獲得客戶端真實(shí)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:3306/index.jsp 時,則能返回客戶端的真實(shí)IP地址,寫了個方法去驗(yàn)證。原因出在了Squid上。squid.conf 的配制文件 forwarded_for 項(xiàng)默認(rèn)是為on,如果 forwarded_for 設(shè)成了 off 則:X-Forwarded-For: unknown

于是可得出獲得客戶端真實(shí)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值,究竟哪個才是真正的用戶端的真實(shí)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

用戶真實(shí)IP為: 192.168.1.110

上面兩種方法都是可行的,千萬不要單單使用 request.getRemoteAddr() 方法獲取客戶端 IP,這種方法是不理想的。

希望這篇文章對大家的學(xué)習(xí)有所幫助。

  • 用jsp編寫文件上載

    用jsp編寫文件上載

    用jsp編寫文件上載...
    2006-10-10
  • 詳解JSP 中Spring工作原理及其作用

    詳解JSP 中Spring工作原理及其作用

    這篇文章主要介紹了詳解JSP 中Spring工作原理及其作用的相關(guān)資料,使用 AOP后,公共服務(wù)(比如日志、持久性、事務(wù)等)就可以分解成方面并應(yīng)用到域?qū)ο笊?,同時不會增加域?qū)ο蟮膶ο竽P偷膹?fù)雜性,需要的朋友可以參考下
    2017-08-08
  • 一個可以防止刷新的JSP計(jì)數(shù)器

    一個可以防止刷新的JSP計(jì)數(shù)器

    一個可以防止刷新的JSP計(jì)數(shù)器...
    2006-10-10
  • JSP request(return String)用法詳例

    JSP request(return String)用法詳例

    JSP中request(return String)用法詳例 ,需要的朋友可以參考下。
    2009-10-10
  • java Lucene 中自定義排序的實(shí)現(xiàn)

    java Lucene 中自定義排序的實(shí)現(xiàn)

    使用Lucene來搜索內(nèi)容,搜索結(jié)果的顯示順序當(dāng)然是比較重要的.Lucene中Build-in的幾個排序定義在大多數(shù)情況下是不適合我們使用的.要適合自己的應(yīng)用程序的場景,就只能自定義排序功能,本節(jié)我們就來看看在Lucene中如何實(shí)現(xiàn)自定義排序功能.
    2008-12-12
  • JSP中的倒數(shù)計(jì)時和自動跳轉(zhuǎn)頁面

    JSP中的倒數(shù)計(jì)時和自動跳轉(zhuǎn)頁面

    這篇文章主要介紹了JSP中的倒數(shù)計(jì)時和自動跳轉(zhuǎn)頁面,需要的朋友可以參考下
    2014-06-06
  • 如何使用JSP訪問MySQL數(shù)據(jù)庫

    如何使用JSP訪問MySQL數(shù)據(jù)庫

    如何使用JSP訪問MySQL數(shù)據(jù)庫...
    2006-10-10
  • 一篇文章帶你了解JavaScript-語句

    一篇文章帶你了解JavaScript-語句

    這篇文章主要介紹了JavaScript的基本語句,包括注釋和書寫格式等基本知識,需要的朋友可以參考下,希望本篇文章能給您帶來幫助
    2021-08-08
  • Spring注入Date類型的三種方法總結(jié)

    Spring注入Date類型的三種方法總結(jié)

    這篇文章主要介紹了Spring注入Date類型的三種方法總結(jié)的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這幾種方法,需要的朋友可以參考下
    2017-10-10
  • 最新評論

    兴化市| 四会市| 岚皋县| 丰顺县| 合作市| 元谋县| 沙洋县| 五寨县| 潼关县| 新邵县| 丹寨县| 卢氏县| 墨脱县| 保德县| 海门市| 衡南县| 德格县| 岫岩| 上饶县| 林周县| 噶尔县| 镇远县| 桐梓县| 桃源县| 东乡县| 重庆市| 达孜县| 微山县| 新河县| 萨迦县| 河南省| 清水河县| 东明县| 新沂市| 镇康县| 枝江市| 循化| 高邑县| 南雄市| 武川县| 台山市|