在内网服务器中获得真正的客户端ip的方法
生活随笔
收集整理的這篇文章主要介紹了
在内网服务器中获得真正的客户端ip的方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
如下代碼: /**////?<summary>
????///?RealIP?的摘要說明:
????///?獲得用戶的真實ip,由于squidserver的原因直接取到的ip是內(nèi)網(wǎng)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.");
????????}
????}
其原理就是局域網(wǎng)內(nèi)的服務(wù)器,向真實real server轉(zhuǎn)發(fā)請求時,將客戶端用戶的真實ip放到了Http頭信息中。
????///?RealIP?的摘要說明:
????///?獲得用戶的真實ip,由于squidserver的原因直接取到的ip是內(nèi)網(wǎng)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.");
????????}
????}
其原理就是局域網(wǎng)內(nèi)的服務(wù)器,向真實real server轉(zhuǎn)發(fā)請求時,將客戶端用戶的真實ip放到了Http頭信息中。
總結(jié)
以上是生活随笔為你收集整理的在内网服务器中获得真正的客户端ip的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我们的2008。。。。。。
- 下一篇: 页面传值-laber