如何使用 jQuery 获取客户端 IP 地址

新手上路,请多包涵

我想知道如何使用 jQuery 获取客户端 IP 地址?

可能吗?我知道纯 javascript 不能,但是使用 JSONP 从 Stack Overflow 本身获得了一些代码。

那么,有没有使用 jQuery 的解决方法?

原文由 Wondering 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

jQuery 可以处理 JSONP,只需传递一个格式化为 callback=? $.getJSON 方法的参数,例如:

 $.getJSON("https://api.ipify.org/?format=json", function(e) {
    console.log(e.ip);
});
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

这个例子是一个非常简单的 JSONP 服务,在 api.ipify.org 上实现。

如果您不寻求跨域解决方案,则脚本可以进一步简化,因为您不需要回调参数,并且返回纯 JSON。

原文由 Christian C. Salvadó 发布,翻译遵循 CC BY-SA 3.0 许可协议

对您的服务器进行简单的 AJAX 调用,然后获取 ip 地址的服务器端逻辑应该可以解决问题。

 $.getJSON('getip.php', function(data){
  alert('Your ip is: ' +  data.ip);
});

然后在 php 中你可以这样做:

 <?php
/* getip.php */
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
  $ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
  $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
  $ip=$_SERVER['REMOTE_ADDR'];
}
print json_encode(array('ip' => $ip));

原文由 Alex Sexton 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题