服务端:
//
方法一
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.
}
本文介绍了五种不同的方法来获取客户端的IP地址,包括直接通过HTTP上下文请求、利用ServerVariables属性等,部分方法能够穿透代理服务器获取真实的客户端IP。
165

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



