In diesem Artikel wird hauptsächlich die Methode von Java zum Abrufen der Client-IP basierend auf einer Anfrage vorgestellt. Sie ist sehr gut und hat Referenzwert.
So erhalten Sie die IP-Adresse des Clients in JSP . Ja: request.getRemoteAddr(), diese Methode ist in den meisten Fällen gültig. Die tatsächliche IP-Adresse des Clients kann jedoch nicht über Reverse-Proxy-Software wie Apache und Squid ermittelt werden.
Wenn Sie Reverse-Proxy-Software verwenden und die URL von http://192.168.1.110:2046/ auf die URL von www.xxx.com/ umkehren, verwenden Sie die Methode request.getRemoteAddr(), um sie abzurufen Die IP-Adresse lautet: 127.0.0.1 oder 192.168.1.110, nicht die tatsächliche IP des Clients.
Nach dem Proxying 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 Weiterleitung an den Client zurückgeben Anfrage. Allerdings werden in den HTTP-Header-Informationen der weitergeleiteten Anfrage X-FORWARDED-FOR-Informationen hinzugefügt. Wird verwendet, um die IP-Adresse des ursprünglichen Clients und die vom ursprünglichen Client angeforderte Serveradresse zu verfolgen. Wenn wir http://www.xxx.com/index.jsp/ besuchen, greift nicht wirklich unser Browser auf die Datei index.jsp auf dem Server zu, sondern der Proxyserver greift zuerst auf http://192.168 zu :2046/index.jsp, der Proxyserver gibt die Zugriffsergebnisse an unseren Browser zurück. Da es sich um den Proxyserver handelt, der auf index.jsp zugreift, ist die über die request.getRemoteAddr()-Methode in index.jsp erhaltene IP tatsächlich die Adresse des Proxyservers, nicht die IP-Adresse des Clients.
So können wir die erste Methode finden, um die tatsächliche IP-Adresse des Clients zu erhalten:
public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); }
Aber wenn ich www.xxx.com besuche /index.jsp/, die zurückgegebene IP-Adresse ist immer unbekannt und ist nicht 127.0.0.1 oder 192.168.1.110, wie oben gezeigt. Wenn ich http://192.168.1.110:2046/index.jsp besuche, kann dies der Fall sein zurückgegeben Ich habe eine Methode geschrieben, um die tatsächliche IP-Adresse des Clients 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“ deaktiviert ist, gilt Folgendes: Methode zwei:
[Verwandte Empfehlungen]
1.public String getRemoteHost(javax.servlet.http.HttpServletRequest request){ String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ ip = request.getRemoteAddr(); } return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip; }Teilen Sie einen kleinen Fall eines Request-Objekts
2. Der Unterschied zwischen valueOf und toString, (String) in Java
3 🎜>Teilen Sie fünf Methoden zum Abrufen von Clientdaten im Anforderungsobjekt in ASP
4.Detaillierte Erläuterung des ASP.NET-Systemobjekts Request
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Java-Methode zum Abrufen der Client-IP basierend auf der Anfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!