2012-10-18 121 views
0

我想在我的jsp頁面中獲取客戶端的IP地址,並且想要存儲在我的數據庫中。在Jsp頁面中獲取客戶端的IP地址

我在Jsp頁面中使用下面的代碼來查找IP地址,但它顯示的是服務器的IP地址。

<input type="hidden" name="ipaddress" value="<%=request.getRemoteAddr()%>"/> 
+1

是你的客戶端和服務器在同一臺機器上? –

+0

在不同的機器上 – xrcwrn

+2

檢查此問題:[客戶端的外部IP地址](http://stackoverflow.com/questions/7040181/external-ip-address-of-the-client) – betomontejo

回答

9

在通常情況下,方法ServletRequest.getRemoteAddr()(或getRemoteHost()getRemotePort())應返回實際客戶的詳細信息。 但是,如果它通過代理或不同的servlet引擎進行路由,那麼您將獲得這些機器的IP。要解決這些情況,您可以嘗試以下操作:

request.getHeader("VIA")    --> Gateway 
request.getHeader("X-FORWARDED-FOR")--> IPaddress 

但是,如果請求直接來自客戶端,則可能返回null。您可以通過一些附加條件處理情況以獲取有效數據。

1

試圖從與request對象的服務器端獲取客戶端的IP地址是從來沒有一種可靠的方法。

最可靠的傾向於在客戶端執行,使用ActiveX,Applets或Javascript只是僅舉幾例。但是,這也帶來了一些挑戰。檢查答案this question只是讓你知道你在做什麼反對(This is my prefered answer from that