zoukankan      html  css  js  c++  java
  • ASP.NET获取IP的6种方法

    服务端:

    //方法一
    
    HttpContext.Current.Request.UserHostAddress; 
    
    
    
    //方法二
    
    HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    
    
    
    //方法三
    
    string strHostName = System.Net.Dns.GetHostName();
    
    string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
    
    
    
    //方法四(无视代理)
    
    HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

    客户端:

    //方法五
    
    var ip = '<!--#echo var="REMOTE_ADDR"-->';
    
    alert("Your IP address is "+ip);
    
    
    
    //方法六(无视代理)
    
    function GetLocalIPAddress() 
    
    { 
    
        var obj = null; 
    
        var rslt = ""; 
    
        try 
    
        { 
    
            obj = new ActiveXObject("rcbdyctl.Setting"); 
    
            rslt = obj.GetIPAddress; 
    
            obj = null; 
    
        } 
    
        catch(e) 
    
        { 
    
            // 
    
        } 
    
         
    
        return rslt; 
    
    }

    22日添加:

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

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

    备注:

    1. 有些代理是不会发给我们真实IP地址的

    2. 有些客户端会因为“header_access deny”的安全设置而不发给我们IP

  • 相关阅读:
    bzoj2004(矩阵快速幂,状压DP)
    bzoj1242(弦图判定)
    uva1659(最大费用循环流)
    bzoj1009
    bzoj2893(费用流)
    bzoj4873(最大权闭合子图)
    bzoj2879(动态加边费用流)
    51nod 1239 欧拉筛模板
    poj2774 sa模版
    洛谷3391文艺平衡树
  • 原文地址:https://www.cnblogs.com/roboot/p/4769975.html
Copyright © 2011-2022 走看看