激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java根據(jù)Request獲取客戶端IP

Java根據(jù)Request獲取客戶端IP

2020-10-29 14:55xjh101010 Java教程

這篇文章主要介紹了Java根據(jù)Request獲取客戶端IP的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

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

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

?
1
2
3
4
5
6
public String getRemortIP(HttpServletRequest request) {
 if (request.getHeader("x-forwarded-for") == null) {
 return request.getRemoteAddr();
 }
 return request.getHeader("x-forwarded-for");
}

可是當我訪問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 項默認是為on,如果 forwarded_for 設(shè)成了 off  則:X-Forwarded-For: unknown

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public String getRemoteHost(javax.servlet.http.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.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
}

以上所述是小編給大家介紹的Java根據(jù)Request獲取客戶端IP,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網(wǎng)站的支持!

原文鏈接:http://blog.csdn.net/xjh101010/article/details/72723323

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人福利在线视频 | 黄色av电影在线 | 日韩在线视频在线 | 1级黄色毛片 | 久久久国产精品网站 | 欧美a级毛片 | 看片一区二区三区 | 欧美一区二区三区中文字幕 | 欧美精品电影一区 | 夜夜夜精品视频 | 国产99视频在线观看 | 日本视频在线免费观看 | 双性帝王调教跪撅打屁股 | 国产91九色视频 | 爱操影视 | 成人在线观看免费高清 | 久久久一区二区三区视频 | 羞羞视频免费观看入口 | 伊人在线视频 | 久久一级| 国产一区二区三区在线免费观看 | 1级黄色毛片 | 免费看一级毛片欧美 | 一级毛片免费版 | 欧美日性 | 偷偷操偷偷操 | 中文字幕在线播放视频 | 男女羞羞在线观看 | 免费视频www在线观看 | 99精品国产一区二区三区 | 成人精品视频在线 | 在线 日本 制服 中文 欧美 | 国产午夜精品一区二区三区四区 | 嫩草91在线| 亚洲国产网站 | 欧美日韩亚洲精品一区二区三区 | 91美女啪啪| 夜夜夜影院 | 国产无遮挡一区二区三区毛片日本 | 亚洲人成网在线观看 | 北原夏美av |