簡體   English   中英

在Java中返回相同的公共IP地址

[英]Same public ip address is returned in java

在我的項目中,我需要找到機器的公共IP地址。

我已經實現了使用使用Java查找公共IP地址中提到的方法

我的項目中有一個api網址,例如“ http://182.14.10.5:8080/test/addVendor ”(不是確切的網址),並且已部署在外部tomcat服務器中,該服務器的公共IP地址為187.15.161.90。

面臨的問題是:當我嘗試從其他設備(如移動設備或計算機屬於其他網絡)加載此api url時,每個URL命中都會獲得相同的ip 182.14.161.90。

這就是我感到困惑的地方。 程序是根據該程序編寫還是輸出錯誤。

根據搜索結果,我理解的是,當加載特定的api url時,我應該基於連接到不同網絡的不同機器獲得不同的ip地址。

但是正在獲取與部署我的項目的服務器相同的公共ip(182.14.161.90)。

任何人都可以澄清一下並幫助我解決此問題。

任何建議,將不勝感激。

謝謝

在我看來,您有一個通過tomcat部署的Java Web應用程序,並且想要獲取用戶的IP地址。

您在問題中鏈接的問題是使用Java查找公用ip地址,該問題專門用於獲取運行Java代碼的計算機的IP地址(例如,如果您有台式機應用程序並希望獲取計算機的IP該應用由於某種原因在運行)

如果要獲取用戶的遠程IP,則取決於您的服務器配置

如果Tomcat是您環境中唯一的 Web服務器,並且前面沒有任何內容,則可以使用HttpServletRequest#getRomoteAddr訪問請求的遠程ip,它將為您提供發起請求的套接字連接的IP地址。

除非您在Tomcat之前有Apache HTTPD或Nginx之類的代理服務器,否則這將非常有用,在這種情況下,您需要配置服務器以發送X-Forwarded-For標頭,並使用HttpServletRequest#getHeader獲取用戶的遠程IP。例如HttpServletRequest#getHeaderrequest.getHeader("X-Forwarded-For")

如果我誤解了您的問題,請進行澄清,並在評論中告知我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM