asp.net 获取客户端浏览器访问的IP地址的实例代码

本文介绍了asp.net 获取客户端浏览器访问的IP地址的实例代码,分享给大家,自己也留个笔记

1、js方法

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>Document</title>
  <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
  <script type="text/javascript">
    document.write('IP地址:' + returnCitySN["cip"] + ', 城市编码:' + returnCitySN["cid"] + ', 地区:' + returnCitySN["cname"]);
  </script>
</head>
<body>
</body>
</html> 

2、后台代码实现

#region IP地址限制功能 2017-07-18 

   /// <summary>
   ///
   /// </summary>
   /// <returns></returns>
   public bool IsIPValidate()
   {
     bool flag = false;
     string userip = GetLoginIp();
     string[] addr = GetAddressByIp(userip);
     string addrs = addr[0] + addr[1];
     if ("北京".Equals(addr[0]) || "北京".Equals(addr[1]))
     {
       flag = true;
     }
     return flag;
   } 

   /// <summary>
   /// 获取远程访问用户的Ip地址
   /// </summary>
   /// <returns>返回Ip地址</returns>
   protected string GetLoginIp()
   {
     string loginip = "";
     //Request.ServerVariables[""]--获取服务变量集合
     if (Request.ServerVariables["REMOTE_ADDR"] != null) //判断发出请求的远程主机的ip地址是否为空
     {
       //获取发出请求的远程主机的Ip地址
       loginip = Request.ServerVariables["REMOTE_ADDR"].ToString();
     }
     //判断登记用户是否使用设置代理
     else if (Request.ServerVariables["HTTP_VIA"] != null)
     {
       if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
       {
         //获取代理的服务器Ip地址
         loginip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
       }
       else
       {
         //获取客户端IP
         loginip = Request.UserHostAddress;
       }
     }
     else
     {
       //获取客户端IP
       loginip = Request.UserHostAddress;
     }
     return loginip;
   } 

   /// <summary>
   /// 根据IP获取省市
   /// </summary>
   public string[] GetAddressByIp(string ip)
   {
     string PostUrl = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=" + ip;
     string res = GetDataByPost(PostUrl);//该条请求返回的数据为:res=1t115.193.210.0t115.194.201.255t中国t浙江t杭州t电信
     string[] arr = getAreaInfoList(res);
     return arr;
   } 

   /// <summary>
   /// Post请求数据
   /// </summary>
   /// <param name="url"></param>
   /// <returns></returns>
   public string GetDataByPost(string url)
   {
     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
     string s = "anything";
     byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes(s);
     req.Method = "POST";
     req.ContentType = "application/x-www-form-urlencoded";
     req.ContentLength = requestBytes.Length;
     Stream requestStream = req.GetRequestStream();
     requestStream.Write(requestBytes, 0, requestBytes.Length);
     requestStream.Close(); 

     HttpWebResponse res = (HttpWebResponse)req.GetResponse();
     StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default);
     string backstr = sr.ReadToEnd();
     sr.Close();
     res.Close();
     return backstr;
   } 

   /// <summary>
   /// 处理所要的数据
   /// </summary>
   /// <param name="ip"></param>
   /// <returns></returns>
   public static string[] getAreaInfoList(string ipData)
   {
     //1t115.193.210.0t115.194.201.255t中国t浙江t杭州t电信
     string[] areaArr = new string[10];
     string[] newAreaArr = new string[2];
     try
     {
       //取所要的数据,这里只取省市
       areaArr = ipData.Split('t');
       newAreaArr[0] = areaArr[4];//省
       newAreaArr[1] = areaArr[5];//市
     }
     catch (Exception e)
     { 

     }
     return newAreaArr;
   } 

   #endregion 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2017-07-19

Asp.net获取客户端IP常见代码存在的伪造IP问题探讨

在网卡随便一搜: Asp.net 客户端IP 可以搜索到很多页面,提供的代码基本都类似于: 复制代码 代码如下: if (Request.ServerVariables["HTTP_VIA"] != null) return Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0]; else return Request.ServerVariables["RE

ASP.NET 获取客户端IP方法

话不多说,请看代码: string requestClientIpAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (string.IsNullOrEmpty(requestClientIpAddress)) requestClientIpAddress = HttpContext.Current.Request.ServerVariables["REMOTE_A

ASP.NET获取真正的客户端IP地址的6种方法

在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址. 要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取. 不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables(

如何为CentOS 7配置静态IP地址的两种方法

如果你想要为CentOS 7中的某个网络接口设置静态IP地址,有几种不同的方法,这取决于你是否想要使用网络管理器. 网络管理器(Network Manager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活.默认情况下,CentOS/RHEL 7安装有网络管理器,并处于启用状态. 使用下面的命令来验证网络管理器服务的状态: $ systemctl status NetworkManager.service 运行以下命令来检查受网络管理器管理的网络接口: $ nm

c#获取本机在局域网ip地址的二种方法

复制代码 代码如下: /// <summary>/// 获取本机在局域网的IP地址/// </summary>/// <returns></returns>private string GetLocalIPAddress(){    System.Net.IPAddress[] addressList = Dns.GetHostEntry(Dns.GetHostName()).AddressList;    string strNativeIP = &quo

PHP获取用户访问IP地址的5种方法

本文实例为大家分享了5种PHP获取用户访问IP地址的方法,供大家参考,具体内容如下 <?php //方法1: $ip = $_SERVER["REMOTE_ADDR"]; echo $ip; //方法2: $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($

LNAMP架构中后端Apache获取用户真实IP地址的2种方法

一.Nginx反向代理配置: 1.虚拟主机配置 复制代码 代码如下: location / {    try_files $uri @apache;} location @apache {internal;    proxy_pass http://127.0.0.1:8080;    include proxy.conf;} location ~ .*\.(php|php5)?$  {    proxy_pass http://127.0.0.1:8080;    include proxy.

详解虚拟机下CentOS 6.5配置IP地址的三种方法

实验软件环境:虚拟机Vmware Workstation10.0 .CentOS 6.5 32位 1.自动获取IP地址 虚拟机使用桥接模式,相当于连接到物理机的网络里,物理机网络有DHCP服务器自动分配IP地址. #dhclient 自动获取ip地址命令 #ifconfig 查询系统里网卡信息,ip地址.MAC地址 分配到ip地址后,用物理机进行ping ip地址,检测是否ping通. 2.手动设置ip地址 如果虚拟机不能自动获取IP,只能手动配置,配置方法如下: 输入命令 #vi /etc/s

Android手机获取IP地址的两种方法

1.使用WIFI 首先设置用户权限 复制代码 代码如下: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  <

bat脚本显示本机IP地址的两种方法(内网ip)

实现代码一: 通过 route print 实现 @echo off for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do ( set IP=%%a ) echo %IP% 实现代码二: @echo off for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do (echo %%i) p

jsp获取客户端IP地址的方法

本文实例讲述了jsp获取客户端IP地址的方法.分享给大家供大家参考,具体如下: public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request

JS简单获取客户端IP地址的方法【调用搜狐接口】

本文实例讲述了JS简单获取客户端IP地址的方法.分享给大家供大家参考,具体如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>使用搜狐接口获取客户端IP地址</title> </head> <body> <script src="http://pv.sohu.com/cityjson?ie=utf-8