zoukankan      html  css  js  c++  java
  • .net mvc获取服务器IP

            public static string GetUserIP()
            {
                if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
                {
                    string ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0];
                    return ip;
                }
                else
                {
                    string ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                    return ip;
                }
            }

    这些服务器变量的含义:

    一、没有使用代理服务器的情况:
    REMOTE_ADDR = 您的 IP
    HTTP_VIA = 没数值或不显示
    HTTP_X_FORWARDED_FOR = 没数值或不显示
    
    二、使用透明代理服务器的情况:Transparent Proxies
    REMOTE_ADDR = 代理服务器 IP 
    HTTP_VIA = 代理服务器 IP
    HTTP_X_FORWARDED_FOR = 您的真实 IP
    这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。
    
    三、使用普通匿名代理服务器的情况:Anonymous Proxies
    REMOTE_ADDR = 代理服务器 IP 
    HTTP_VIA = 代理服务器 IP
    HTTP_X_FORWARDED_FOR = 代理服务器 IP
    隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。
    
    四、使用欺骗性代理服务器的情况:Distorting Proxies
    REMOTE_ADDR = 代理服务器 IP 
    HTTP_VIA = 代理服务器 IP 
    HTTP_X_FORWARDED_FOR = 随机的 IP
    告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。
    
    五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)
    REMOTE_ADDR = 代理服务器 IP
    HTTP_VIA = 没数值或不显示
    HTTP_X_FORWARDED_FOR = 没数值或不显示

    下面的这篇博客解释的相当全面,值得一读:

    https://www.cnblogs.com/jxsoft/archive/2011/07/25/2116182.html

    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    软件升级细节卸载删除快捷方式等前需要检测
    安装gitlab的总结
    如何修改vagrant系统的root用户密码
    写一个PHP单例模式
    redis使用笔记
    mysql 删除商品名字重复数据,同时保留最新一条
    杀死僵尸进程
    Django 用户状态管理,认证,失效
    关于iOS多任务的一些扫盲
    ajax异步
  • 原文地址:https://www.cnblogs.com/AduBlog/p/14031721.html
Copyright © 2011-2022 走看看