La différence entre HTTP_X_FORWARDED_FOR et REMOTE_ADDR. Il n'y a pas de variable HTTP_X_FORWARDED_FOR dans Request.ServerVariables, seulement REMOTE_ADDR, mais les deux variables peuvent obtenir l'adresse IP du client. Alors, quelle est la différence entre eux ?
Utilisez Request.ServerVariables(REMOTE_ADDR) dans ASP pour obtenir l'adresse IP du client. Cependant, si le client utilise un serveur proxy pour accéder, ce qui est obtenu est l'adresse IP du serveur proxy, et non la véritable adresse IP du client. Pour obtenir la véritable adresse IP du client via le serveur proxy, utilisez Request.ServerVariables(HTTP_X_FORWARDED_FOR) pour la lire.
Cependant, il convient de noter que tous les serveurs proxy ne peuvent pas utiliser Request.ServerVariables(HTTP_X_FORWARDED_FOR) pour lire la véritable adresse IP du client. Certaines des adresses IP lues par cette méthode sont toujours l'adresse IP du serveur proxy.
Une autre chose à noter est que si le client n'accède pas via un serveur proxy, la valeur obtenue avec Request.ServerVariables (HTTP_X_FORWARDED_FOR) sera vide. Donc, si vous souhaitez utiliser cette méthode dans votre programme, vous pouvez procéder comme ceci :
...
userip = Request.ServerVariables (HTTP_X_FORWARDED_FOR)
Si userip = Alors userip = Request.ServerVariables (REMOTE_ADDR)
...
Autrement dit : si le client passe le serveur proxy, la valeur de HTTP_X_FORWARDED_FOR est prise. Si le client ne passe pas le serveur proxy, la valeur de REMOTE_ADDR est prise.
Bien entendu, l'approche ci-dessus n'est pas omnipotente. Comme mentionné dans le troisième paragraphe, avez-vous pensé que si l'utilisateur utilise un proxy de niveau 2, un proxy de niveau 3, un proxy de niveau 4... .