[英]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。 我還沒有機會在分布式環境中進行測試。
我的想法正確嗎,或者這種方法有什么問題?
提前謝謝。
我的想法正確嗎
您的想法大體上是正確的,但以下幾點值得注意:
標頭實際上是X-Forwarded-For(請注意情況)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.