c# 获取客户端ip
2015-05-22 15:09
218 查看
针对 HttpContext.Current.Request.UserHostAddress 如果客户使用的是代理,将获取不到真是的ip
要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取。
不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的IP。
还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables ("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:
string strIp = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(strIp))
{
strIp = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (strIp.IndexOf(',') > 1)
{
strIp = strIp.Substring(0, strIp.IndexOf(','));
}
要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取。
不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的IP。
还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables ("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理:
string strIp = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(strIp))
{
strIp = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (strIp.IndexOf(',') > 1)
{
strIp = strIp.Substring(0, strIp.IndexOf(','));
}
相关文章推荐
- C#中如何获取服务器IP,名称,操作系统,客户端IP,名称等
- C#获取客户端IP
- C#中如何获取服务器IP,名称,操作系统,客户端IP,名称!
- c#中获取服务器IP,客户端IP以及其它
- C#获取客户端IP地址+获取本机外网IP
- c#中获取服务器IP,客户端IP以及其它
- c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明
- C#中如何获取服务器IP,名称,操作系统,客户端IP,名称!
- c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明-->防止SQL的注入
- c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明
- C# 获取客户端IP
- C#获取客户端ip
- C# 获取客户端IP
- C# 之 获取服务器IP,客户端IP以及其它
- C#通过Web获取客户端的IP与Mac地址实现
- [导入]【原】C#里获取客户端IP,端口号的简单示例
- C# 获取客户端i,客户端主机ip
- c# 获取客户端ip
- c#中获取服务器IP,客户端IP以及其它
- c#获取客户端IP为何得到的值是服务器IP