Tomcat Servlet request.getRemoteAddr()所得值爲0:0:0:0:0:0:0:1

環境:


tomcat5.6

JSP

UTF-8

IP協議:IPv4,IPv6

服務器和訪問者在同一機器上。


問題描述


上傳文件時,爲了避免文件名重複,打算利用IP地址+時間戳的方式和給文件命名。但是,從本機上訪問本機服務器時,利用request.getRemoteAddr()函數獲取IP地址,得到的是0:0:0:0:0:0:0:1。因爲是按IPv4的方式和解析的,所以使得保存文件失敗。

原因及解決方案


因爲機器上啓用的IPv6協議,所以在對localhost進DNS解析時,得到的是IPv6形式的本機地址0:0:0:0:0:0:0:1。因此在利用http://localhost:8080/demo/ 訪問時,request.getRemoteAddr()函數纔會得到上面的結果。
可以修改hosts文件。位置:C:\Windows\System32\drivers\etc。添加上一句127.0.0.1       localhost,這樣request.getRemoteAddr()函數得到的將是127.0.0.1。
此外,利用別的機器來訪問本機服務器,則不會出現上述上問題,能夠取得它的IPv4地址。對於網上所說的因爲tomcat的反向代理,使得request.getRemoteAddr()無法獲得客戶端真實IP的問題,我目前還不是很理解。

關於hosts文件


hosts文件相當於一個位於本地的IP地址到域名的映射文件,可以提供DNS解析。如果想訪問的網站被域名污染(域名劫持),可以預先將IP,域名對寫入hosts文件。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章