我想得到ClientIPaddress,但当我调用Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
时,我总是得到NULL
。
在检查Servervariables
列表后,我注意到HTTP_X_FORWARDED_FOR
不在选项列表中。
有谁知道这是如何实现的,以及如何解决?或者,这个选项不在列表中而我遗漏了一些东西,这是正常的吗?
提前感谢
发布于 2013-07-08 15:44:51
如果请求是由代理转发的,则Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
将只有一个值。通常您会使用Request.ServerVariables["REMOTE_ADDR"]
获取客户端IP。
发布于 2017-02-09 21:01:31
public string GetIPAddress()
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipAddress))
{
string[] addresses = ipAddress.Split(',');
if (addresses.Length != 0)
{
return addresses[0];
}
}
return context.Request.ServerVariables["REMOTE_ADDR"];
}
这个方法可能对你有用。
发布于 2013-11-27 21:45:28
请尝试以下操作:
public static string GetUserIP() {
var ip = ( HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null
&& HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "" )
? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
: HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (ip.Contains( "," ))
ip = ip.Split( ',' ).First();
return ip.Trim();
}
可在此处找到:
http://mycodepad.wordpress.com/2013/04/26/c-getting-a-user-ip-behind-a-proxy-http_x_forwarded_for/
https://stackoverflow.com/questions/17521277
复制相似问题