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

JS和C#.NET获取客户端IP的更多相关文章

  1. Node.js、Express框架获取客户端IP地址

    Node.js //传入请求HttpRequest function getClientIp(req) { return req.headers['x-forwarded-for'] || req.c ...

  2. JS获取客户端IP地址、MAC和主机名的7个方法汇总

    今天在搞JS(javascript)获取客户端IP的小程序,上网搜了下,好多在现在的系统和浏览器中的都无效,很无奈,在Chrome.FireFox中很少搞到直接利用ActiveX获取IP等的JS脚本. ...

  3. JS获取客户端IP地址、MAC和主机名七种方法

    一.使用JS获取客户端IP的几个方法方法一(只针对IE且客户端的IE允许AcitiveX运行,通过平台:XP,SERVER03,2000).获取客户端IP代码:<HTML><HEAD ...

  4. nginx反向代理node.js获取客户端IP

    使用Nginx做node.js程序的反向代理,会有这么一个问题:在程序中获取的客户端IP永远是127.0.0.1 如果想要拿到真实的客户端IP改怎么办呢? 一.首先配置Nginx的反向代理 proxy ...

  5. JS获取客户端IP地址、MAC和主机名【转】

    JS获取客户端IP地址.MAC和主机名 引用:JS获取客户端IP地址.MAC和主机名的7个方法汇总 利用搜狐接口 <html> <head> <meta http-equ ...

  6. 浅谈js获取客户端IP

    JS前端获取客户端IP的方法基本都是通过三方接口: 常用的方法1: <script src="http://pv.sohu.com/cityjson?ie=utf-8"> ...

  7. nodejs获取客户端IP Address

    在网上看见很多问node.js如何获取客户端IP,所以记录下来,以供大家参考. function getClientIp(req) { return req.headers['x-forwarded- ...

  8. koa中是如何封装获取客户端IP的?

    案例 var koa = require('koa') var app = new koa() app.use(function (ctx,next) { ctx.body = ctx.ip }) a ...

  9. PHP获取客户端IP

    /** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...

随机推荐

  1. POJ 3301:Texas Trip(计算几何+三分)

    http://poj.org/problem?id=3301 题意:在二维平面上有n个点,每个点有一个坐标,问需要的正方形最小面积是多少可以覆盖所有的点. 思路:从第二个样例可以看出,将正方形旋转45 ...

  2. BZOJ 2957:楼房重建(分块)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2957 题意:…… 思路:对于每一个块,维护一个单调递增的斜率(因为小于前面的斜率的话是肯定看不见的) ...

  3. C# Linq 笛卡尔积

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. vue-cli · Failed to download repo vuejs-templates/webpack: self signed certificate in certificate chain

    vue init webpack <Project name> 报错: vue-cli · Failed to download repo vuejs-templates/webpack: ...

  5. 腾讯云tomcat问题

    Ubuntu启动特别慢 1.在$JAVA_HOME/jre/lib/security/java.security中,把securerandom.source=file:/dev/urandom替换成s ...

  6. [ZJOI2006]物流运输 题解

    [ZJOI2006]物流运输 时间限制: 10 Sec  内存限制: 162 MB 题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个 ...

  7. springboot之mybatisplus,mp的简单理解

    这是一张简单的service的继承图.可以看到我们的执行类,即XxxServiceImpl的继承关系. 从上到下,ServiceImpl和BaseMapper是一个依赖关系,ServiceImpl和I ...

  8. Spring Aware 到底是什么?

    通过如下前序两篇文章: Spring Bean 生命周期之"我从哪里来"? Spring Bean 生命周期之"我要到哪里去"? 我们了解了 Spring Be ...

  9. Linux 文件编程、时间编程基本函数

    文件编程 文件描述符 fd --->>>数字(文件的身份证,代表文件身份),通过 fd 可找到正在操作或需要打开的文件. 基本函数操作: 1)打开/创建文件 int open (co ...

  10. D:苏卿念发红包

    首先,题目中已经说得很明确了(按照常理也是). 当有mmm个包,你第kkk个抢.k>mk>mk>m的话.显然,平时会显示:来晚了一步,红包已经被领完了\text{来晚了一步,红包已经 ...