Der Unterschied zwischen HTTP_X_FORWARDED_FOR und REMOTE_ADDR. In Request.ServerVariables gibt es keine HTTP_X_FORWARDED_FOR-Variable, sondern nur REMOTE_ADDR, aber beide Variablen können die Client-IP-Adresse erhalten. Was ist also der Unterschied zwischen ihnen?
Verwenden Sie Request.ServerVariables(REMOTE_ADDR) in ASP, um die IP-Adresse des Clients abzurufen. Wenn der Client jedoch einen Proxyserver für den Zugriff verwendet, wird die IP-Adresse des Proxyservers und nicht die tatsächliche IP-Adresse des Clients abgerufen. Um die echte IP-Adresse des Clients über den Proxyserver zu erhalten, verwenden Sie Request.ServerVariables(HTTP_X_FORWARDED_FOR), um sie zu lesen.
Es ist jedoch zu beachten, dass nicht jeder Proxyserver Request.ServerVariables(HTTP_X_FORWARDED_FOR) verwenden kann, um die echte IP des Clients zu lesen. Einige der von dieser Methode gelesenen IPs sind immer noch die IP des Proxyservers.
Beachten Sie außerdem, dass der mit Request.ServerVariables (HTTP_X_FORWARDED_FOR) erhaltene Wert leer ist, wenn der Client nicht über einen Proxyserver zugreift. Wenn Sie diese Methode also in Ihrem Programm verwenden möchten, können Sie dies folgendermaßen tun:
...
userip = Request.ServerVariables(HTTP_X_FORWARDED_FOR)
Wenn userip = Dann userip = Request.ServerVariables(REMOTE_ADDR)
...
Das heißt: Wenn der Client den Proxyserver passiert, wird der Wert von HTTP_X_FORWARDED_FOR verwendet. Wenn der Client den Proxyserver nicht passiert, wird der Wert von REMOTE_ADDR verwendet.
Natürlich ist der obige Ansatz nicht allmächtig. Wie im dritten Absatz erwähnt, haben Sie darüber nachgedacht, dass, wenn der Benutzer einen Proxy der Ebene 2, einen Proxy der Ebene 3 oder einen Proxy der Ebene 4 verwendet?