request.getRemoteAddr()取得的是IPv6的地址格式解決方法


1:在使用request.getRemoteAddr()取得客戶端的IP地址時,得到的卻是IPv6的地址格式0:0:0:0:0:0:0:1,而不是IPv4的地址格式127.0.0.1的原因?

因為機器上啟用的IPv6協議,所以在對localhost進DNS解析時,得到的是IPv6形式的本機地址0:0:0:0:0:0:0:1.

實際上這種情況只有在服務器和客戶端在同一台機器上用localhost訪問時才會出現。

2:解決方法

(1)使用127.0.0.1代替localhost進行訪問

把地址格式寫為http://127.0.0.1/

(2)讓tomcat只支持IPv4(方便一些)

a:在eclipse中使用tomcat的修改方法

Run->Run Configurations...->Apache Tomcat->Tomcat v7.0 Server at localhost-> Arguments->VM arguments

在運行參數中添加: -Djava.net.preferIPv4Stack=true

重啟Tomcat在使用request.getRemoteAddr()方法就能得到IPv4的地址了。

如圖:

(b)通過Tomcat的start.bat啟動修改方法

找到Tomcat的bin目錄下的 catalina.bat文件,在其中加入:

set JAVA_OPTS=%JAVA_OPTS% -Djava.net.preferIPv4Stack=true %LOGGING_MANAGER%

重啟Tomcat在使用request.getRemoteAddr()方法就能得到IPv4的地址了。

插入的位置如圖:

在其他地方插入應該也可以。

(3)一些其他的方法(不知道什么原因設置之后沒有效果)

修改hosts文件。位置:C:\Windows\System32\drivers\etc

注釋掉# ::1 localhost這一句,可win7本就是注釋掉的。

又添加一句127.0.0.1 localhost說這樣request.getRemoteAddr()函數得到的將是127.0.0.1,可試過了還是沒有效果。

又在網絡和共享中心和注冊表禁用了IPv6也沒有效果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM