zoukankan      html  css  js  c++  java
  • 在内网服务器中获得真正的客户端ip的方法

    如下代码:
    /// <summary>
        
    /// RealIP 的摘要说明:
        
    /// 获得用户的真实ip,由于squidserver的原因直接取到的ip是内网ip
        
    /// </summary>

        abstract public class RealIP
        
    {
            
    const string HEADER_KEY_IP = "X-Forwarded-For";

            
    /// <summary>
            
    /// 真实ip
            
    /// </summary>

            public static string Value
            
    {
                
    get
                
    {
                    System.Web.HttpRequest request 
    = System.Web.HttpContext.Current.Request;
                    
    string ip = string.Empty;
                    
    string ipHeader = request.Headers[HEADER_KEY_IP];
        
                    
    if(!string.IsNullOrEmpty(ipHeader))
                    
    {
                        
    string[] IPs = ipHeader.Split(',');
                        
    foreach (string ipItem in IPs)
                        
    {
                            
    if ((!string.IsNullOrEmpty(ipItem)) && (!IsLocalIP(ipItem)))
                            
    {
                                ip 
    = ipItem;
                                
    break;
                            }

                        }

                    }

                    
    if(ip == string.Empty)ip = request.UserHostAddress;
                    
    return ip;
                }

            }


            
    static bool IsLocalIP(string ip)
            
    {
                
    return ip.StartsWith("192.168."|| ip.StartsWith("172.16."|| ip.StartsWith("10.");
            }

        }

    其原理就是局域网内的服务器,向真实real server转发请求时,将客户端用户的真实ip放到了Http头信息中。
  • 相关阅读:
    Centos7更改网卡名为eth0
    Centos7部署Open-Falcon监控
    centos6.x一键15项系统优化(转自努力哥)
    运维题目(十三)
    运维题目(十二)
    Mongodb的学习整理(下)
    Centos7下yum安装mongodb
    浏览器缓存
    控制反转
    js setTimeOut()
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/client_real_ip.html
Copyright © 2011-2022 走看看