ASP.NET获取IP的6种方法(转载于LanceZhang's Tech Blog)

本文介绍了从服务端及客户端获取真实IP地址的多种方法,包括直接读取、使用DNS解析等,并提供了一种针对代理服务器的特殊解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务端:

 1 //方法一
 2 HttpContext.Current.Request.UserHostAddress; 
 3 
 4 //方法二
 5 HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
 6 
 7 //方法三
 8 string strHostName = System.Net.Dns.GetHostName();
 9 string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
10 
11 //方法四(无视代理)
12 HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

 

客户端:

 1 //方法五
 2 var ip = '<!--#echo var="REMOTE_ADDR"-->';
 3 alert("Your IP address is "+ip);
 4 
 5 
 6 
 7 //方法六(无视代理)
 8 function GetLocalIPAddress() 
 9 { 
10     var obj = null; 
11     var rslt = ""; 
12     try 
13     { 
14         obj = new ActiveXObject("rcbdyctl.Setting"); 
15         rslt = obj.GetIPAddress; 
16         obj = null; 
17     } 
18     catch(e) 
19     { 
20         // 
21     }
22     return rslt; 
23 }

 

来自印度的MCT Maulik Patel提供的一种服务端解决方案:

1 if(Context.Request.ServerVariables["HTTP_VIA"]!=null) // using proxy
2 { 
3      ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();  // Return real client IP.
4 }
5 else// not using proxy or can't get the Client IP
6 { 
7      ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP.
9 }

 

备注:

  1. 有些代理是不会发给我们真实IP地址的。
  2. 有些客户端会因为“header_access deny”的安全设置而不发给我们IP。

转载于:https://www.cnblogs.com/IamYoung/p/3915230.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值