2009-09-09 167 views
3

如何在java中的Web服務中訪問IP,瀏覽器等客戶端詳細信息?webservice中的客戶詳細信息

+0

你是如何實現服務器端的?你使用了什麼框架? – 2009-09-09 09:29:19

+0

你沒有提到你的環境。 你會使用Web服務器和什麼服務器? 誰會打電話給你的Web服務,瀏覽器或Web服務客戶端應用程序? – 2009-09-09 09:33:52

+0

我有一個調用Web服務的Jsp頁面。 Web方法需要記錄它獲取的每個請求。所以我需要客戶端IP和瀏覽器。用戶訪問那個jsp頁面。服務器是Tomacat。 – 2009-09-09 10:10:28

回答

1
String ip = request.getRemoteAddress(); 
String browser = request.getHeader("User-Agent"); 
+0

如果iam只使用Jsp頁面,這將會執行。 – 2009-09-09 10:26:05

0

有關瀏覽器的信息將在HTTP頭文件中可用,如:內容類型,版本等。 如果Web服務能夠獲取客戶端的IP地址,則安全性將被大量包含。 直到客戶端將它作爲參數發送給您的呼叫時,才能訪問IP地址。

+2

爲什麼安全性會受到影響?服務器始終知道客戶端的IP地址。否則,它不知道在哪裏發送對請求的響應 – janko 2009-09-09 09:35:00

+0

不,服務器只知道要響應的IP地址,這可能是代理服務器或NAT設備的地址。這可能不是客戶端的IP地址。 – 2009-09-09 09:41:09

+0

@janko,當您連接到Internet上的服務器時,服務器只知道下一個中繼地址,而不知道客戶端的IP地址。如果你在一個代理的後面,那麼在最大服務器可以知道代理ip,但不是代理後面的實際客戶ip – Cshah 2009-09-09 09:46:35

1

如果您使用的是axis或Jax Rpc,那麼您可以通過此來獲取IP地址和瀏覽器,這必須在服務器端存根上完成。

HttpServletRequest httpReq = (HttpServletRequest) MessageContext.getCurrentContext().getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST); 

String ip = httpReq.getRemoteAddr(); 

String browser = httpReq.getHeader("User-Agent"); 
相關問題