簡體   English   中英

從WebSphere中的請求獲取客戶端ip地址

[英]Getting Client ip address from request in WebSphere

我有一種情況,我需要從請求中檢索客戶端的ipaddress

我用來獲取客戶端ipaddress的代碼是:

String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
                    ipAddress = request.getRemoteAddr();
                }

據我了解,如果兩者之間存在代理,則request.getHeader("X-FORWARDED-FOR")將返回客戶端的ipaddress。 如果客戶端和應用服務器之間沒有代理,則request.getHeader("X-FORWARDED-FOR")將返回null,但在這種情況下request.getRemoteAddr()可以返回ipaddress。

對於我的本地開發,我之間沒有任何代理或負載平衡器。 因此,在上面的代碼中, request.getHeader("X-FORWARDED-FOR")將返回null,然后可以從request.getRemoteAddr();獲取ipaddress request.getRemoteAddr(); 這似乎工作正常。

對於我的質量保證和產品環境,我們有一個F5 LOAD BALANCER,它將請求路由到IHS Web服務器,然后將其路由到將在其上部署此代碼的Websphere appserver。

因此,在這種分布式環境中,IAM猜測request.getHeader("X-FORWARDED-FOR")應該正確地向我返回客戶端的ipaddress。 我還沒有機會在分布式環境中進行測試。

我的想法正確嗎,或者這種方法有什么問題?

提前謝謝。

我的想法正確嗎

您的想法大體上是正確的,但以下幾點值得注意:

  1. 標頭實際上是X-Forwarded-For(請注意情況)。

  2. 您可以有多個這樣的標題

  3. 標頭本身可以包含多個IP地址。

暫無
暫無

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

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