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

Won*_*ing 39 javascript jquery ip-address

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

可能吗?我知道纯JavaScript不能,但从JSONPStack Overflow本身获得了一些代码.

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

CMS*_*CMS 56

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

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

这个例子是一个非常简单的JSONP服务api.ipify.org.

如果您不是在寻找跨域解决方案,那么脚本可以进一步简化,因为您不需要回调参数,并返回纯JSON.

  • 这台服务器现在已关闭.所以我们可以简单地从jsonip.appspot.com中删除appspot.它看起来像http://jsonip.com?callback=?就这样 :) (4认同)

Ale*_*ton 27

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

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

然后在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));
Run Code Online (Sandbox Code Playgroud)