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头信息中。
  • 相关阅读:
    android 模拟点击事件
    IGZO显示屏
    java 代码混淆
    android 模拟点击3
    android 文件读写
    android 抓包 tcpdump
    pathon 2
    conversion to dalvik format failed with error 1
    zipalign
    android 来电状态
  • 原文地址:https://www.cnblogs.com/yukaizhao/p/client_real_ip.html
Copyright © 2011-2022 走看看