本文转载自:
http://www.cnblogs.com/blodfox777/archive/2008/07/21/1247447.html 作者:blodfox777 转载请注明该声明。
//
方法一
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;
}
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.
}

服务端:
//
方法一
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;
}
22日添加:
来自印度的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的多种方法
本文详细介绍了在服务端和客户端获取用户真实IP地址的多种方法,包括通过HttpContext、Dns、ActiveXObject以及处理代理服务器的情况,适用于.NET环境。
1390

被折叠的 条评论
为什么被折叠?



