我正在從我的機器向服務器發送請求。我的機器的ip地址是192.168.1.217
。在java中獲取錯誤的IP地址
在服務器端,我打印客戶端IP地址,但是當我使用request.getRemoteAddr()
打印IP地址時,我將它作爲192.168.0.5
。
當我打印IP地址request.getHeader("X-FORWARDED-FOR")
我得到它作爲null
。
我使用的是Apache Tomcat服務器。
我正在從我的機器向服務器發送請求。我的機器的ip地址是192.168.1.217
。在java中獲取錯誤的IP地址
在服務器端,我打印客戶端IP地址,但是當我使用request.getRemoteAddr()
打印IP地址時,我將它作爲192.168.0.5
。
當我打印IP地址request.getHeader("X-FORWARDED-FOR")
我得到它作爲null
。
我使用的是Apache Tomcat服務器。
如果該IP地址(192.168.0.5
)是(或a)防火牆,則它是正確的IP地址。您的服務器端代碼正在報告它所看到的「客戶端」IP地址,並且它不能做得更好。
在一般情況下,有幾個可能的解釋爲的是怎麼回事:
防火牆可以運行的HTTP代理和您的客戶機可以通過所有的HTTP請求來配置發送代理。如果客戶端能夠直接與服務器通話,那麼您可以修改客戶端的代理設置以將服務器視爲例外。
防火牆可能會提供NAT服務,將您網絡的一部分與另一部分隔離(例如)。如果這是問題,那麼您將需要您的網絡管理員的幫助。
這是常見的(而且往往「良好做法」)上運行(說)端口8080 Tomcat服務器,並把它後面的反向代理端口80上
在你的情況,第一種解釋很可能。
@andrucz建議使用Tomcat遠程IP過濾器。這可以在某些情況下工作,但不是全部,它使用的信息很容易被「欺騙」
底線是一個web服務器無法看到客戶端的真實IP地址。所以這是不明智的實施你的服務取決於在這個。
您可以使用Tomcat遠程IP篩選器:http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_IP_Filter
也許你會需要網絡管理員的幫助下配置防火牆,包括‘X - 轉發,對於’頭。
你有沒有在服務器端配置任何代理/防火牆? –
您的網絡中有哪臺機器的地址是192.168.0.5?這個信息可能會有幫助。 – f1sh
我已經與網絡人員詢問過這臺機器,他們告訴我這是防火牆。我對防火牆一無所知。請幫忙。 –