Asp.Net MVC3:使用Javascript的客户端IP地址[重复]

Posted

技术标签:

【中文标题】Asp.Net MVC3:使用Javascript的客户端IP地址[重复]【英文标题】:Asp.Net MVC 3 : Client IP addres Using Javascript [duplicate] 【发布时间】:2012-07-18 07:03:45 【问题描述】:

可能重复:Get Client IP using just javascript?

我正在开发 .net mvc 3 应用程序。我只想获取客户端的 IP 地址。 如何使用 JavaScript 获取客户端 IP。如果有人知道,请分享。

【问题讨论】:

阅读以下链接 [an-i-lookup-the-ip-address-of-a-hostname-from-javascript][1] [1]: ***.com/questions/102605/… JavaScript 是客户端脚本,因此它无权访问 Request 对象。服务器正在捕获用户请求,因此只有服务器端脚本可以访问它。在 .NET 中,您拥有获取客户端 IP 的属性:Request.UserHostAddress 【参考方案1】:

你不能用 javascript 做到这一点。您可以使用 javascript 向控制器操作发送 AJAX 请求,该操作将返回从 Request.UserHostAddress 读取它的客户端 IP:

public ActionResult GetIP()

    return Json(new  ip = Request.UserHostAddress , JsonRequestBehavior.AllowGet);

然后:

var url = '@Url.Action("GetIP", "SomeController")';
$.getJSON(url, function(result) 
    alert(result.ip);
);

【讨论】:

【参考方案2】:
<html xmlns="http://www.w3.org/1999/xhtml">
              <head>
              <title></title>
              <script type="text/javascript">
                  window.onload = function () 
                      var script = document.createElement("script");
                      script.type = "text/javascript";
                      script.src = "http://jsonip.appspot.com/?callback=DisplayIP";
                      document.getElementsByTagName("head")[0].appendChild(script);
                  ;
                  function DisplayIP(response) 
                      document.getElementById("ipaddress").innerHTML = "Your IP Address is " + response.ip;
                  
              </script>
              </head>
              <body>
                  <form>
                      <span id = "ipaddress"></span>
                  </form>
              </body>
              </html>

【讨论】:

通常情况下,这将提供执行 NAT 的路由器的 IP 地址,而不是客户端本身。由于 ASP.NET 可用,因此可以从对 ASP.NET 服务器的请求中获取该 IP 地址,因此它可能不是 OP 正在寻找的。​​span> 【参考方案3】:
<!-- Require jQuery / Anyversion --><script type="text/javascript"  language="Javascript"    src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<!-- Require EasyJQuery After JQuery --><script type="text/javascript"     language="Javascript" src="http://api.easyjquery.com/easyjquery.js"></script>
<script type="text/javascript" language="Javascript">
// 1. Your Data Here
function my_callback(json) 
    alert("IP :" + json.IP + " nCOUNTRY: " + json.COUNTRY);


function my_callback2(json) 
    // more information at http://api.easyjquery.com/test/demo-ip.php
    alert("IP :" + json.IP + " nCOUNTRY: " + json.COUNTRY + " City: " + json.cityName + " regionName: " + json.regionName);


  // 2. Setup Callback Function
  // EasyjQuery_Get_IP("my_callback"); // fastest version
 EasyjQuery_Get_IP("my_callback2","full"); // full version
</script>​

a working Example

【讨论】:

以上是关于Asp.Net MVC3:使用Javascript的客户端IP地址[重复]的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC3 - 将项目动态添加到对象的数组中

如何在 ASP.NET MVC3 中通过 HTTPS 提供静态文件(在 ~/Content 中)

C# asp.net MVC3 中的日历控件

ASP.NET MVC3:ValidationType ModelClientValidationRule

如何使用 ASP.NET MVC3 编辑嵌套模型

如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入