JavaScript获取客户端IP

3

你好,我在这里找到了如何获取客户端IP的答案: 使用客户端Javascript执行DNS查找(主机名到IP地址)是否可行?

但是我不知道该怎么使用它。

这是我的代码:

var user;
if ($('#user-id').length) {
    user = $('#user-id').text();
} else {
    http://jsonip.appspot.com/?callback=getip
    function getip(json){
       user = json.ip;
    }
}

我不明白如何包含url和如何使用getip函数。

在else中,我需要将用户设置为IP地址。

谢谢!


正如Mohamed所指出的那样,这需要服务器的帮助。如果您告诉我们您正在使用的后端框架/语言,您将得到更具体的答案。 - Chubas
4个回答

5
使用jQuery,您可以进行JSONP调用:

JSONP 调用是一种跨域请求的方法。

$.getJSON('http://jsonip.appspot.com/?callback=?',
        function(data){
          alert(data.ip);
        });

更容易理解的方法是:不使用jQuery,可以尝试以下替代方案:

<script type="text/javascript">
    function getip(data){
      alert(data.ip);
    }
</script>
<script type="text/javascript" src="http://jsonip.appspot.com/?callback=getip">
</script>

请注意,当您在HTML中包含http://jsonip.appspot.com/?callback=getip作为脚本时,您将得到有效的JavaScript响应。
getip({"ip": "147.234.2.5", "address":"147.234.2.5"});

这行代码使用正确的参数执行您的函数。请注意,函数的名称是由查询字符串给出的。


0

您只能从JavaScript访问您的域,除非您使用iframes进行通信,否则无法使用JavaScript进行跨域通信。

如果您有一个动态后端,例如PHP、Java、Python、Ruby、CGI等,您可以轻松地从访问您页面的用户那里获取IP地址。每种语言都有自己的机制。


2
你绝对可以发起跨域请求。请继续了解“Access-Control”响应头的相关内容。 - BalusC
抱歉,我忘记添加链接了,这是它的链接:Access-Control - BalusC

0
你的JavaScript语法中有一个随机的、自由浮动的URL。
以下是使用jQuery进行远程JSON请求的方法。

http://api.jquery.com/jQuery.getJSON/

我建议您总体上更熟悉JavaScript。


0
你可以使用类似这样的代码:
<script type="text/javascript">
  var userip;
</script>
...
<script type="text/javascript" src="http://l2.io/ip.js?var=userip"</script>
...
<script type="text/javascript">
  document.write("Your IP is :", userip);
</script>

这是该库的网址:http://l2.io/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接