导航

客户端IP

Posted on 2010-01-15 11:19  kingwangzhen  阅读(266)  评论(0编辑  收藏  举报

http代理相关知识

关键就在HTTP_X_FORWARDED_FOR
使用不同种类代理服务器,上面的信息会有所不同:

一、没有使用代理服务器的情况:
REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 您的

 

 String ip = HttpContext.Current.Request.ServerVariables["X-Forwarded-For"];
            if (ip == null || ip.Length == 0 || string.Compare("unknown",ip,true)==0)
            {
                ip = HttpContext.Current.Request.ServerVariables["Proxy-Client-IP"];
            }
            if (ip == null || ip.Length == 0 || string.Compare("unknown",ip,true)==0)
            {
                ip = HttpContext.Current.Request.ServerVariables["WL-Proxy-Client-IP"];
            }
            if (ip == null || ip.Length == 0 || string.Compare("unknown",ip,true)==0)
            {
                ip = HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"];
            }
            if (ip == null || ip.Length == 0 || string.Compare("unknown",ip,true)==0)
            {
                ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            }
            if (ip == null || ip.Length == 0 || string.Compare("unknown",ip,true)==0)
            {
               // ip = HttpContext.Current.Request.getRemoteAddr();   
                ip = HttpContext.Current.Request.ServerVariables.Get("Remote_Addr").ToString();

            }
            return ip;