2013-01-16 251 views
0

我從ASP.NET獲取客戶端IP地址。但某些客戶端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爲localhost,即在相同的機器發出請求作爲承載它。

我的猜測是,你所看到的事實上是你自己的測試或調試?

我會考慮Request.IsLocal()作爲一個很好的方法來找出。

+0

攻擊我的服務器這個IP。它每秒創建100-200次會話。 –