X龙@China .Net 'blog

需要的不仅仅是工作,而是通过努力得来的美好将来。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

获取客服端IP

Posted on 2010-06-07 16:37  X龙  阅读(286)  评论(0编辑  收藏  举报
服务端:

 

 

//方法一
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

 

点击这里给我发消息http://wp.qq.com/index.html