JS和C#.NET获取客户端IP

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

原文地址:https://www.cnblogs.com/sky6699/p/11320260.html

时间: 2024-11-08 10:57:27

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

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

一.使用JS获取客户端IP的几个方法 方法一(只针对IE且客户端的IE允许AcitiveX运行,通过平台:XP,SERVER03,2000). 获取客户端IP代码: 1 function GetLocalIPAddr() { 2 var oSetting = null; 3 var ip = null; 4 try { 5 oSetting = new ActiveXObject("rcbdyctl.Setting"); 6 ip = oSetting.GetIPAddress; 7

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

一.使用JS获取客户端IP的几个方法方法一(只针对IE且客户端的IE允许AcitiveX运行,通过平台:XP,SERVER03,2000).获取客户端IP代码:<HTML><HEAD><TITLE>GetLocalIP</TITLE></HEAD><BODY>获取IP:<script language="JavaScript"> function GetLocalIPAddr(){ var oSetti

js获取客户端ip地址

<script type="text/javascript" src="http://www.coding123.net/getip.ashx?js=1"></script> <script> alert(ip) </script> js获取客户端ip地址

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

使用Nginx做node.js程序的反向代理,会有这么一个问题:在程序中获取的客户端IP永远是127.0.0.1 如果想要拿到真实的客户端IP改怎么办呢? 一.首先配置Nginx的反向代理 proxy_set_header server { listen 80; server_name chat.luckybing.top; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; pro

php获取客户端IP

从Onethink代码里摘出来的 /**  * 获取客户端IP地址  * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字  * @return mixed  */ function get_client_ip($type = 0) {     $type       =  $type ? 1 : 0;     static $ip  =   NULL;     if ($ip !== NULL) return $ip[$type];     if 

php 获取客户端ip

1 function getRealIp() { 2 if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) 3 $ip = getenv("HTTP_CLIENT_IP"); 4 else if (getenv("HTTP_X_FORWARDED_FOR") && st

再论 ASP.NET 中获取客户端IP地址

说到IP获取无非是我们常见的以下几种方式,但是具体获取的值具体区别在哪?网上不乏相关文章,说的也是很详细,但是真正使用起来,还有很多不太对的地方.IP在不同系统中,应用相当广泛,常见的日志记录.广告分区域投放等. 1: HttpContext.Current.Request.ServerVariables["HTTP_VIA"]; 2: HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"

性能优化之——.NET(C#)调用webService获取客户端IP地址所属区域(异步回调)(二)

朋友们这次分享的是异步回调不是异步调用哦! 请注意喽! 功能描述,接口地址,方法名称以及参数说明,同上篇:.NET(C#)调用webService获取客户端IP地址所属区域(非异步)(一)(LZ比较懒,不想写太多哦!(⊙0⊙)) 实现代码如下: 1 namespace main 2 { 3 class Program 4 { 5 public static string Result = string.Empty; 6 7 static void Main(string[] args) 8 {

Netty4.X 获取客户端IP

最近使用netty-4.0.23.Final 版本编写服务端代码,有个获取客户端代码的小需求,以前使用servlet开发时很机械的就: String ipAddr="0.0.0.0"; if (reqest.getHeader("X-Forwarded-For") == null) {     ipAddr = reqest.getRemoteAddr();  }else{          ipAddr = req.getHeader("X-Forwar