在内网服务器中获得真正的客户端ip的方法

摘要:
以下代码:/**//////RealIP:////摘要描述:////获取用户的真实IP地址。由于squidserver的原因而直接获得的IP地址是intranet IP地址//abstractpublicclassRealIP{conststringHEADER_KEY_IP=“X-Forwarded-for”;/**//////真实IP地址////public
如下代码:
在内网服务器中获得真正的客户端ip的方法第1张在内网服务器中获得真正的客户端ip的方法第2张/**//// <summary>
在内网服务器中获得真正的客户端ip的方法第3张    
/// RealIP 的摘要说明:
在内网服务器中获得真正的客户端ip的方法第3张    
/// 获得用户的真实ip,由于squidserver的原因直接取到的ip是内网ip
在内网服务器中获得真正的客户端ip的方法第5张    
/// </summary>

在内网服务器中获得真正的客户端ip的方法第6张    abstract public class RealIP
在内网服务器中获得真正的客户端ip的方法第1张在内网服务器中获得真正的客户端ip的方法第2张    
在内网服务器中获得真正的客户端ip的方法第9张{
在内网服务器中获得真正的客户端ip的方法第3张        
const string HEADER_KEY_IP = "X-Forwarded-For";
在内网服务器中获得真正的客户端ip的方法第3张
在内网服务器中获得真正的客户端ip的方法第12张在内网服务器中获得真正的客户端ip的方法第13张        
/**//// <summary>
在内网服务器中获得真正的客户端ip的方法第3张        
/// 真实ip
在内网服务器中获得真正的客户端ip的方法第15张        
/// </summary>

在内网服务器中获得真正的客户端ip的方法第3张        public static string Value
在内网服务器中获得真正的客户端ip的方法第12张在内网服务器中获得真正的客户端ip的方法第13张        
在内网服务器中获得真正的客户端ip的方法第9张{
在内网服务器中获得真正的客户端ip的方法第3张            
get
在内网服务器中获得真正的客户端ip的方法第12张在内网服务器中获得真正的客户端ip的方法第13张            
在内网服务器中获得真正的客户端ip的方法第9张{
在内网服务器中获得真正的客户端ip的方法第3张                System.Web.HttpRequest request 
= System.Web.HttpContext.Current.Request;
在内网服务器中获得真正的客户端ip的方法第3张                
string ip = string.Empty;
在内网服务器中获得真正的客户端ip的方法第3张                
string ipHeader = request.Headers[HEADER_KEY_IP];
在内网服务器中获得真正的客户端ip的方法第3张    
在内网服务器中获得真正的客户端ip的方法第3张                
if(!string.IsNullOrEmpty(ipHeader))
在内网服务器中获得真正的客户端ip的方法第12张在内网服务器中获得真正的客户端ip的方法第13张                
在内网服务器中获得真正的客户端ip的方法第9张{
在内网服务器中获得真正的客户端ip的方法第3张                    
string[] IPs = ipHeader.Split(',');
在内网服务器中获得真正的客户端ip的方法第3张                    
foreach (string ipItem in IPs)
在内网服务器中获得真正的客户端ip的方法第12张在内网服务器中获得真正的客户端ip的方法第13张                    
在内网服务器中获得真正的客户端ip的方法第9张{
在内网服务器中获得真正的客户端ip的方法第3张                        
if ((!string.IsNullOrEmpty(ipItem)) && (!IsLocalIP(ipItem)))
在内网服务器中获得真正的客户端ip的方法第12张在内网服务器中获得真正的客户端ip的方法第13张                        
在内网服务器中获得真正的客户端ip的方法第9张{
在内网服务器中获得真正的客户端ip的方法第3张                            ip 
= ipItem;
在内网服务器中获得真正的客户端ip的方法第3张                            
break;
在内网服务器中获得真正的客户端ip的方法第15张                        }

在内网服务器中获得真正的客户端ip的方法第15张                    }

在内网服务器中获得真正的客户端ip的方法第15张                }

在内网服务器中获得真正的客户端ip的方法第3张                
if(ip == string.Empty)ip = request.UserHostAddress;
在内网服务器中获得真正的客户端ip的方法第3张                
return ip;
在内网服务器中获得真正的客户端ip的方法第15张            }

在内网服务器中获得真正的客户端ip的方法第15张        }

在内网服务器中获得真正的客户端ip的方法第3张
在内网服务器中获得真正的客户端ip的方法第3张        
static bool IsLocalIP(string ip)
在内网服务器中获得真正的客户端ip的方法第12张在内网服务器中获得真正的客户端ip的方法第13张        
在内网服务器中获得真正的客户端ip的方法第9张{
在内网服务器中获得真正的客户端ip的方法第3张            
return ip.StartsWith("192.168."|| ip.StartsWith("172.16."|| ip.StartsWith("10.");
在内网服务器中获得真正的客户端ip的方法第15张        }

在内网服务器中获得真正的客户端ip的方法第5张    }

其原理就是局域网内的服务器,向真实real server转发请求时,将客户端用户的真实ip放到了Http头信息中。

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Metro UI 的设计感悟实用英语:办公用品的地道英语说法汇总下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

通过反射验证对象属性值

数据交互是WEB交互的核心功能,用户在Web页面的表单中提交数据,程序接受数据后进行相应的逻辑运算后将数据写入数据库中,在这样的应用中无论 是考虑到应用系统的安全还是用户数据的完整,我们都将对用户提交的数据信息进行相应的验证。 比如一个用户注册的交互应用: 一般会在Model层建立一个注册类 public class Register{public s...

web选择文件夹上传

我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,ie8,ie9,Chrome,Firefox,360安全浏览器,并且刷新浏览器后仍然能够续传,重启浏览器(关闭浏览器后再打开)仍然能够继续上传,重启电脑后仍然能...

SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程)

场景 在某些场景下需要前端浏览器从服务器端下载文件,比如需要下载导入Excel的模板。 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 既然是实现通用下载接口,就要实现在后端配置一个下载文件的路径,在前端进行下载请求时传递要下载的文件...

循环语句中 bark,continue,return

 循环语句中常常出现bark,continue,rturnl来配合自己的循环来达到某种需求. 一。break    1. break语句形式: break;    2. break语句功能:       A. 在switch语句中,break是其语法本省的一部分,break语句会终止其后语句的执行,退出switch语句。       B. 使一个循环立即结...

Android 系统属性-SystemProperties详解***

  创建与修改android属性用Systemproperties.set(name, value),获取android属性用Systemproperties.get(name),需要注意的是android属性的名称是有一定的格式要求的:   如下:1.前缀必须用systemcoreinitproperty_service.c中定义的前缀。 2. 进行系...

Springboot项目集成JPush极光推送(Java SDK)

1.由于项目的需求,需要在Android APP上实现消息推送功能,所以引用了极光推送(官网:https://www.jiguang.cn/,  文档:http://docs.jiguang.cn/) 2.极光推送是经过考验的大规模app推送平台,极光推送目前每天推送消息数超过20亿条。 开发者集成SDK后,可以通过调用API推送消息。同时,极光推送提供可...