获取客服端IP

服务端:

 

 

// 方法一
HttpContext.Current.Request.UserHostAddress; 

// 方法二
HttpContext.Current.Request.ServerVariables[ " REMOTE_ADDR " ];

// 方法三
string  strHostName  =  System.Net.Dns.GetHostName();
string  clientIPAddress  =  System.Net.Dns.GetHostAddresses(strHostName).GetValue( 0 ).ToString();

// 方法四(无视代理)
HttpContext.Current.Request.ServerVariables[ " HTTP_X_FORWARDED_FOR " ];


 

客户端:

 

 

// 方法五
var ip  =   ' <!--#echo var="REMOTE_ADDR"--> ' ;
alert(
" Your IP address is  " + ip);

// 方法六(无视代理)
function GetLocalIPAddress() 

    var obj 
=   null
    var rslt 
=   ""
    
try  
    { 
        obj 
=   new  ActiveXObject( " rcbdyctl.Setting " ); 
        rslt 
=  obj.GetIPAddress; 
        obj 
=   null
    } 
    
catch (e) 
    { 
        
//  
    } 
     
    
return  rslt; 

来自印度的MCT Maulik Patel提供了一种服务端的解决方案,很好:

 

 

if (Context.Request.ServerVariables[ " HTTP_VIA " ] != null //  using proxy

     ip
= Context.Request.ServerVariables[ " HTTP_X_FORWARDED_FOR " ].ToString();   //  Return real client IP.
}
else //  not using proxy or can't get the Client IP

     ip
= Context.Request.ServerVariables[ " REMOTE_ADDR " ].ToString();  // While it can't get the Client IP, it will return proxy IP.
}


 

备注:

 

1 . 有些代理是不会发给我们真实IP地址的

2 . 有些客户端会因为“header_access deny”的安全设置而不发给我们IP

 

你可能感兴趣的:(IP)