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

简介: 1、js方法 Document document.

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

相关文章
|
4月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
128 0
|
10月前
|
开发框架 前端开发 JavaScript
ASP.NET Core MVC 从入门到精通之wwwroot和客户端库
ASP.NET Core MVC 从入门到精通之wwwroot和客户端库
163 0
|
10月前
|
开发框架 前端开发 JavaScript
ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件
ASP .Net Core 中间件的使用(一):搭建静态文件服务器/访问指定文件
|
11月前
|
存储 Linux
如何通过/proc/net/fib_trie获取ip地址
如何通过/proc/net/fib_trie获取ip地址
197 0
|
SQL 存储 开发框架
ASP.NET 使用语言集成查询 LINQ进行数据访问
ASP.NET 使用语言集成查询 LINQ进行数据访问
ASP.NET 使用语言集成查询 LINQ进行数据访问
|
开发框架 .NET Windows
真正解决ASP.NET每一个页面首次访问超级慢的问题
真正解决ASP.NET每一个页面首次访问超级慢的问题
220 0
|
开发框架 .NET 网络安全
C# ASP.Net 设置外网访问
C# ASP.Net 设置外网访问
720 0
C# ASP.Net 设置外网访问
|
开发框架 .NET
ASP.NET Core添加静态目录访问、是其他目录可被访问
ASP.NET Core添加静态目录访问、是其他目录可被访问
123 0
ASP.NET Core添加静态目录访问、是其他目录可被访问
|
Web App开发 开发框架 安全
[ASP.NET Core 3.1]浏览器嗅探解决部分浏览器丢失Cookie问
看了前文的同学们应该都知道,搜狗、360等浏览器在单点登录中反复重定向,最终失败报错。 原因在于,非Chrome80+浏览器不识别Cookie上的SameSite=none属性值,导致认证Cookie在后续请求中被抛弃。
[ASP.NET Core 3.1]浏览器嗅探解决部分浏览器丢失Cookie问
|
Web App开发 开发框架 Kubernetes
临近年关,修复ASP.NET Core因浏览器内核版本引发的单点登录故障
经过测试, 出现单点登陆故障的是搜狗、360等双核浏览器(默认使用Chrome内核), 较新式的Edge、Chrome、Firefox均未出现此障碍。
临近年关,修复ASP.NET Core因浏览器内核版本引发的单点登录故障