HttpServletRequest.getRemoteAddr () gibt die falsche Adresse zurück [duplizieren]

8

Wir müssen die IP-Adresse des Clients über eine Seam-Aktion protokollieren. Derzeit verwenden wir den Code:

%Vor%

Dies scheint jedoch immer eine interne Adresse unseres Netzwerks und nicht die IP-Adresse des Clients zu liefern. Aus meinen Recherchen geht hervor, dass ein Reverse-Proxy im Netzwerk die Dinge verwirren kann, aber wir könnten es möglicherweise beheben, indem wir unsere Webserver neu konfigurieren. Hat jemand anderes dieses Problem und wie haben Sie es gelöst?

Wir verwenden JBoss 5.1-App-Server und Apache-Webserver. Danke!

    
Greg Charles 19.11.2009, 22:36
quelle

2 Antworten

6

Sie können einen Proxy "durchschauen" und die Adresse des ursprünglichen Anforderers mithilfe von

aus der Kopfzeile X-FORWARDED-FOR abrufen %Vor%

Ich nehme an, dass ein fehlerhafter Proxy zwischen dem ursprünglichen Anforderer und Ihrem Server dazu führen kann, dass der wahre Wert verloren geht.

Ref: Wikipedia Beschreibung von X-FORWARDED-FOR

    
martin clayton 19.11.2009, 22:40
quelle
3

Was Sie brauchen, ist, dass Ihr Reverse-Proxy die ursprüngliche IP-Adresse in einem speziellen Header wie x-forwarded-for weiterleitet. Sie können diesen Header dann von Ihrem Servlet abrufen. Darüber hinaus möchten Sie möglicherweise Ihre Protokolldatei ändern, um diese IP-Adresse zu protokollieren. Beispiel:

%Vor%     
brianegge 19.11.2009 22:42
quelle

Tags und Links