Разница между HTTP_X_FORWARDED_FOR и REMOTE_ADDR В Request.ServerVariables нет переменной HTTP_X_FORWARDED_FOR, есть только REMOTE_ADDR, но обе переменные могут получать IP-адрес клиента. Так в чем же разница между ними?
Используйте Request.ServerVariables(REMOTE_ADDR) в ASP для получения IP-адреса клиента. Однако, если клиент использует для доступа прокси-сервер, получается IP-адрес прокси-сервера, а не реальный IP-адрес клиента. Чтобы получить реальный IP-адрес клиента через прокси-сервер, используйте Request.ServerVariables(HTTP_X_FORWARDED_FOR) для его чтения.
Однако следует отметить, что не каждый прокси-сервер может использовать Request.ServerVariables(HTTP_X_FORWARDED_FOR) для чтения реального IP-адреса клиента. Некоторые IP-адреса, считанные этим методом, по-прежнему являются IP-адресом прокси-сервера.
Еще следует отметить, что если клиент не осуществляет доступ через прокси-сервер, значение, полученное с помощью Request.ServerVariables (HTTP_X_FORWARDED_FOR), будет пустым. Итак, если вы хотите использовать этот метод в своей программе, вы можете сделать это следующим образом:
...
userip = Request.ServerVariables(HTTP_X_FORWARDED_FOR)
Если userip = Тогда userip = Request.ServerVariables(REMOTE_ADDR)
...
То есть: если клиент передает прокси-сервер, берется значение HTTP_X_FORWARDED_FOR. Если клиент не передает прокси-сервер, берется значение REMOTE_ADDR.
Конечно, описанный выше подход не всесилен. Как упоминалось в третьем абзаце, учитывали ли вы, что если пользователь использует прокси-сервер уровня 2, прокси-сервер уровня 3, прокси-сервер уровня 4... .