咱们常常在项目中会遇到这种须要获取客户端真实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. }