Heim > Java > javaLernprogramm > So erhalten Sie die echte IP-Adresse des Clients in Java

So erhalten Sie die echte IP-Adresse des Clients in Java

WBOY
Freigeben: 2023-05-10 11:46:05
nach vorne
1535 Leute haben es durchsucht

In JSP lautet die Methode zum Abrufen der IP-Adresse des Clients: request.getRemoteAddr(). Diese Methode ist in den meisten Fällen effektiv. Die tatsächliche IP-Adresse des Clients kann jedoch nicht über Reverse-Proxy-Software wie Apache und Squid ermittelt werden.

Wenn Reverse-Proxy-Software verwendet wird, verwenden Sie beim Reverse-Proxying der URL http://192.168.1.110:2046/ zur URL http://www.javapeixun.com.cn/ die Methode request.getRemoteAddr() Die erhaltene IP-Adresse lautet: 127.0.0.1 oder 192.168.1.110, nicht die tatsächliche IP des Clients.

Nach dem Durchlaufen des Proxys kann der Server aufgrund der Hinzufügung einer Zwischenschicht zwischen dem Client und dem Dienst die IP des Clients nicht direkt abrufen und die serverseitige Anwendung kann die Adresse nicht direkt durch Weiterleiten der Anforderung an den Client zurückgeben . Den HTTP-Header-Informationen der weitergeleiteten Anfrage werden jedoch X-FORWARDED-FOR-Informationen hinzugefügt. Wird verwendet, um die ursprüngliche Client-IP-Adresse und die vom ursprünglichen Client angeforderte Serveradresse zu verfolgen. Wenn wir http://www.javapeixun.com.cn /index.jsp/ besuchen, ist es tatsächlich nicht unser Browser, der tatsächlich auf die Datei index.jsp auf dem Server zugreift, sondern der Proxyserver greift zuerst auf http:// zu 192.168.1.110: 2046/index.jsp, der Proxyserver gibt die Zugriffsergebnisse an unseren Browser zurück, da es der Proxyserver ist, der auf index.jsp zugreift, sodass index.jsp über die Methode request.getRemoteAddr() abgerufen wird. Die IP ist eigentlich die Adresse des Proxyservers, nicht die IP-Adresse des Clients.

So können wir die erste Methode erhalten, um die tatsächliche IP-Adresse des Clients zu ermitteln:

public String getRemortIP(HttpServletRequest request) {   if (request.getHeader("x-forwarded-for") == null) {    return request.getRemoteAddr();   }   return request.getHeader("x-forwarded-for");  }
Nach dem Login kopieren

Aber wenn ich http://www.5a520.cn /index.jsp/ besuche, ist die zurückgegebene IP-Adresse immer unbekannt , was auch nicht 127.0.0.1 oder 192.168.1.110 ist, wie oben gezeigt. Wenn ich http://192.168.1.110:2046/index.jsp besuche, kann die tatsächliche IP-Adresse des Clients zurückgegeben werden, und ich habe eine geschrieben Methode, um es zu überprüfen. Der Grund liegt in Squid. Das Element „forwarded_for“ in der Konfigurationsdatei von „squid.conf“ ist standardmäßig aktiviert. Wenn „forwarded_for“ auf „off“ gesetzt ist, gilt: Wenn der mehrstufige Reverse-Proxy übergeben wird, ist der Wert von „X-Forwarded-For“ nicht nur eins, sondern eine Reihe von IP-Werten. Welcher ist die echte IP des echten Clients?

Die Antwort besteht darin, die erste nicht unbekannte gültige IP-Zeichenfolge in X-Forwarded-For zu verwenden. Zum Beispiel:

Das obige ist der detaillierte Inhalt vonSo erhalten Sie die echte IP-Adresse des Clients in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage