页面增加CDN缓存后获取用户真实IP

本文介绍了一种通过CDN缓存后获取客户端真实IP地址的方法。该方法首先尝试从HTTP_X_FORWARDED_FOR中获取IP,若不存在或不正确,则从REMOTE_ADDR中获取。对于包含多个IP的情况,仅保留第一个有效IP。
摘要由CSDN通过智能技术生成

页面增加CDN缓存后获取用户真实IP

 public string GetUserIp()
       {
           string ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
           if (string.IsNullOrEmpty(ip) || ip.ToLower().IndexOf("unknown", System.StringComparison.Ordinal) > -1)
           {
               ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
           }
           else
           {
               if (ip.IndexOf(',') > -1)
               {
                   ip = ip.Substring(0, ip.IndexOf(','));
               }
               if (ip.IndexOf(';') > -1)
               {
                   ip = ip.Substring(0, ip.IndexOf(';'));
               }
           }

           Regex regex = new Regex("[^0-9.]");
           if (string.IsNullOrEmpty(ip) || regex.IsMatch(ip))
           {
               ip = HttpContext.Current.Request.UserHostAddress;
               if (ip == null || ip.Length == 0 || regex.IsMatch(ip))
               {
                   ip = "0.0.0.0";
               }
           }
           return ip;
       }

 

转载于:https://www.cnblogs.com/everyone/archive/2013/02/26/2933547.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值