我們經常在項目中會遇到這種需要獲取客戶端真實IP的需求,其實在網上也能隨便就能查到各種獲取的方法,我也是在網上查了加上了自己的實踐,說一下自己在實踐后的感受,基本上網上大部分都是用JS的方法來獲取客戶端的IP,今天我也分享一種C# .NET可以獲取到客戶端IP的方法。
一、JS獲取客戶端IP
基本上在網上可以查到的以下幾種方法:
(1)使用搜狐接口(適用所有平台及瀏覽器)
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script type="text/javascript"> document.write(returnCitySN["cip"]+','+returnCitySN["cname"]) </script>
這種方式我有嘗試過,第一天還好好的,第二天就不行了,后面就變成:在我本地電腦上直接運行是沒有問題的,但是發布到服務器后就沒有效果了。
(2)使用新浪接口(適用所有平台及瀏覽器)
<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等瀏覽器不支持,顯然也是不可取的。
綜上,其實我是不推薦采用JS的方式來獲取客戶端IP的,下面介紹一種C# .NET的方式,也是我自己在使用的。
二、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. }