Maison  >  Article  >  Java  >  Explication détaillée de la méthode Java pour obtenir l'adresse IP du client sur la base d'une requête

Explication détaillée de la méthode Java pour obtenir l'adresse IP du client sur la base d'une requête

零下一度
零下一度original
2017-05-27 09:27:451893parcourir

Cet article présente principalement la méthode Java pour obtenir l'adresse IP du client basée sur la requête. Elle est très bonne et a une valeur de référence. Les amis dans le besoin peuvent se référer à

Comment obtenir l'adresse IP du client dans JSP. . Oui : request.getRemoteAddr(), cette méthode est valide dans la plupart des cas. Cependant, la véritable adresse IP du client ne peut pas être obtenue via des logiciels de proxy inverse tels qu'Apache et Squid.

Si un logiciel de proxy inverse est utilisé, lors du proxy inverse de l'URL de http://192.168.1.110:2046/ vers l'URL de www.xxx.com/, utilisez la méthode request.getRemoteAddr() pour obtenir it L'adresse IP est : 127.0.0.1 ou 192.168.1.110, pas la véritable IP du client.

Après le proxy, en raison de l'ajout d'une couche intermédiaire entre le client et le service, le serveur ne peut pas obtenir directement l'adresse IP du client, et l'application côté serveur ne peut pas renvoyer directement l'adresse au client en transmettant le demande. Cependant, dans les informations d'en-tête HTTP de la requête transférée, les informations X-FORWARDED-FOR sont ajoutées. Utilisé pour suivre l'adresse IP du client d'origine et l'adresse du serveur demandée par le client d'origine. Lorsque nous visitons http://www.xxx.com/index.jsp/, ce n'est pas réellement notre navigateur qui accède réellement au fichier index.jsp sur le serveur, mais le serveur proxy accède d'abord à http://192.168. :2046/index.jsp, le serveur proxy renvoie les résultats consultés à notre navigateur Parce que c'est le serveur proxy qui accède à index.jsp, l'IP obtenue via la méthode request.getRemoteAddr() dans index.jsp C'est en fait l'adresse. du serveur proxy, pas l'adresse IP du client.

Nous pouvons donc obtenir la première méthode pour obtenir la véritable adresse IP du client :

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

Mais quand je visite www.xxx.com /index.jsp/, l'adresse IP renvoyée est toujours inconnue et ce n'est pas 127.0.0.1 ou 192.168.1.110 comme indiqué ci-dessus. Lorsque je visite http://192.168.1.110:2046/index.jsp, le client peut être. de retour, j'ai écrit une méthode pour vérifier la véritable adresse IP du client. La raison réside dans Squid. L'élément forwarded_for dans le fichier de configuration de squid.conf est activé par défaut. Si forwarded_for est désactivé, alors : Deuxième méthode :

[Recommandations associées]

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;
}
Partagez un petit cas d'objet Request

2 La différence entre valueOf et toString, (String) en Java

3. 🎜>Partagez cinq méthodes pour obtenir des données client dans l'objet de requête en asp

4.

Explication détaillée de l'objet système ASP.NET Request

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn