咱們常常在項目中會遇到這種須要獲取客戶端真實IP的需求,其實在網上也能隨便就能查到各類獲取的方法,我也是在網上查了加上了本身的實踐,說一下本身在實踐後的感覺,基本上網上大部分都是用JS的方法來獲取客戶端的IP,今天我也分享一種C# .NET能夠獲取到客戶端IP的方法。javascript
1、JS獲取客戶端IPjava
基本上在網上能夠查到的如下幾種方法:json
(1)使用搜狐接口(適用全部平臺及瀏覽器)瀏覽器
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script type="text/javascript"> document.write(returnCitySN["cip"]+','+returnCitySN["cname"]) </script>
這種方式我有嘗試過,第一天還好好的,次日就不行了,後面就變成:在我本地電腦上直接運行是沒有問題的,可是發佈到服務器後就沒有效果了。服務器
(2)使用新浪接口(適用全部平臺及瀏覽器)spa
<script type="text/javascript" src="http://counter.sina.com.cn/ip/" charset="gb2312"></script> <!--獲取接口數據,注意charset --> <script type="text/javascript"> document.writeln("IP地址:"+ILData[0]+"<br />"); //輸出接口數據中的IP地址 document.writeln("地址類型:"+ILData[1]+"<br />"); //輸出接口數據中的IP地址的類型 document.writeln("地址類型:"+ILData[2]+"<br />"); //輸出接口數據中的IP地址的省市 document.writeln("地址類型:"+ILData[3]+"<br />"); //輸出接口數據中的IP地址的 document.writeln("地址類型:"+ILData[4]+"<br />"); //輸出接口數據中的IP地址的運營商 </script>
這個地址說實話我都打不開,多是慢。放棄了。插件
以上兩種都是使用的第三方接口的方式,好像還有一些我的的接口,從個人實踐來看,第三方接口不穩定,並且修改了接口可能會致使你的項目出錯,實際上是不可取的。代理
還有針對IE瀏覽器,使用AcitiveX插件方法,這種方法必須要讓用戶設置本身的IE瀏覽器容許運行AcitiveX插件纔可行,並且Firefox和Chrome等瀏覽器不支持,顯然也是不可取的。code
綜上,其實我是不推薦採用JS的方式來獲取客戶端IP的,下面介紹一種C# .NET的方式,也是我本身在使用的。blog
2、C# .NET方式獲取客戶端IP
直接貼代碼
string IP; if (Request.ServerVariables["HTTP_VIA"] != null) // 服務器, using proxy { //獲得真實的客戶端地址 IP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // Return real client IP. } else //若是沒有使用代理服務器或者得不到客戶端的ip not using proxy or can't get the Client IP { //獲得服務端的地址 IP = Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP. }