2013-01-16 5 views
0

Я получаю IP-адрес клиента от ASP.NET. Но какой-то клиентский IP-адрес получил 127.0.0.1. Что такое проблема. Как получить действительный IP-адрес клиента?Неверный IP-адрес клиента

Я использую этот код:

public static string GetIP() 
{ 
    string clientIp = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
    if (!string.IsNullOrEmpty(clientIp)) 
    { 
     string[] forwardedIps = clientIp.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); 
     clientIp = forwardedIps[forwardedIps.Length - 1]; 
    } 

    if (string.IsNullOrEmpty(clientIp)) 
     clientIp = HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"]; 
    if (string.IsNullOrEmpty(clientIp)) 
     clientIp = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 

    return clientIp.ToString(); 
} 
+0

127.0.0.1 - адрес локального хоста, я полагаю, что вы подключаетесь к странице с того же компьютера, на котором он размещен? –

+0

просто догадаться? но может быть проблемой прокси. взгляните на http://stackoverflow.com/questions/7445592/what-is-the-difference-between-http-client-ip-and-http-x-forwarded-for – sircapsalot

+0

sircapsolat, я так думаю. Но я не мог найти, как решить. –

ответ

1

127.0.0.1 является локальным, то есть той же машина делает запрос, как разместить его.

Мое предположение заключается в том, что то, что вы видите, представляет собой ваше собственное тестирование или отладку?

Я бы рассмотрел Request.IsLocal() как хороший способ узнать.

+0

атакующий мой сервер этот IP. он создает 100-200 сеансов в секунду. –

Смежные вопросы