欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【真正的获取客户端真实IP地址及利弊分析】,下面是详细的讲解!
真正的获取客户端真实IP地址及利弊分析
/// <summary>
/// 取得客户端真实IP。如果有代理则取第一个非内网地址
/// by flower.b
/// </summary>
public static string IPAddress
{
get
{
string result=String.Empty;
result=HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if(result!=null&&result!=String.Empty)
{
//可能有代理
if(result.IndexOf(".")==-1) //没有“.”肯定是非IPv4格式
result=null;
else
{
if(result.IndexOf(",")!=-1)
{
//有“,”,估计多个代理。取第一个不是内网的IP。
result=result.Replace(" ","").Replace("'","");
string[] temparyip=result.Split(",;".ToCharArray());
for(int i=0;i<temparyip.Length;i++)
{
if( Text.IsIPAddress(temparyip[i])
&& temparyip[i].Substring(0,3)!="10."
&& temparyip[i].Substring(0,7)!="192.168"
&& temparyip[i].Substring(0,7)!="172.16.")
{
return temparyip[i]; //找到不是内网的地址
}
}
}
else if(Text.IsIPAddress(result)) //代理即是IP格式
return result;
else
result=null; //代理中的内容 非IP,取IP
}
}
string IpAddress=(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] !=String.Empty)?HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]:HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (null==result || result==String.Empty)
result=HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (result==null || result==String.Empty)
result=HttpContext.Current.Request.UserHostAddress;
return result;
}
}
关于真正的获取客户端真实IP地址及利弊分析的用户互动如下:
相关问题:如何获取用户的真实IP
答:问题引出: 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 request.getRemoteAd... >>详细
相关问题:PHP如何获取客户端真实IP
答:如果将这个函数应用到限IP访问的网页中,别人即使通过限IP访问段中的代理服务器,也不能访问该页面。 下面提供一个函数: getenv("REMOTE_ADDR")用来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地... >>详细
相关问题:急求,请教下各位,为什么用request.getRemoteAddr()...
答:获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是... >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【asp】asp.net ubb使用代码-net-ubb使用
- 【默认图片】图片不存在使用默认图片代替的实例
- 【asp】asp.net 页面转向 Response.Redirect Ser
- 【页面打印】关于ASP.NET页面打印技术的常用方法
- 【MVC5】MVC 5 第一章 创建MVC 5 web应用程序-net
- 【MVC】一个简单MVC5 + EF6示例分享-EF6实例-MVC5
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
