使用 Javascript 到位置的 IP

IT技术 javascript jquery ip
2021-01-26 17:49:27
<script type="application/javascript">
    function getip(json){
      alert(json.ip); // alerts the ip address
    }
</script>

<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>

我可以通过此代码获取用户IP...

我想找到这个 IP 的位置。我怎么能够?

6个回答

您可以将收到的 IP 提交给在线地理定位服务,例如http://www.geoplugin.net/json.gp?ip=<your ip here>&jsoncallback=<suitable javascript function in your source>,然后包括它返回的来源,该来源将运行您在jsoncallback地理定位信息中指定的功能

或者,您可能想要查看 HTML5 的地理定位功能——您可以在此处查看它的实际演示这样做的好处是您不需要向外部服务器发出请求,但它可能不适用于不支持 HTML5 的浏览器。

我怎样才能在我的 javascript 中调用这个 api 而不会遇到 cors 问题?
2021-03-18 17:49:27
您实际上不需要 XMLHttpRequest(无论如何它都会失败),您只需要命名您的方法geoPlugin或添加一个jsoncallback参数,例如&jsoncallback=myMethod在 URL 上。
2021-03-22 17:49:27
2021-03-22 17:49:27
有关所有免费 IP 查找服务的列表,您可以参考我在stackoverflow.com/questions/391979/...
2021-03-26 17:49:27
哦,糟糕,我真的不应该在上午 9 点回答问题。
2021-04-07 17:49:27

可在此处获得在 MaxMind 数据库上运行的免费开源社区运行地理定位 ip 服务:https ://ipstack.com/

例子

https://api.ipstack.com/160.39.144.19

局限性

每月 10,000 次查询

@fiorix 谢谢——不知道。更新了答案。
2021-03-15 17:49:27
它已移至ipstack.com,他们现在提供付费服务。但是,免费许可的 10,000 次查询限制应该足够了。请注意,它不再是每小时,而是每月。
2021-04-08 17:49:27
他们不支持通过 https 免费计划的 api 调用
2021-04-09 17:49:27
虽然freegeoip.net 使用的是MaxMind 数据库,但该服务与公司完全没有关系。它是由社区支持并由我自己维护的开源和免费软件,未经 MaxMind 同意。
2021-04-13 17:49:27

使用将 IP 地址映射到位置API非常容易运行代码段以获取输入框中 IP 的城市和国家/地区。

$('.send').on('click', function(){

  $.getJSON('https://ipapi.co/'+$('.ip').val()+'/json', function(data){
      $('.city').text(data.city);
      $('.country').text(data.country);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input class="ip" value="8.8.8.8">
<button class="send">Go</button>
<br><br>
<span class="city"></span>, 
<span class="country"></span>

现在(2021 年),此代码片段在 SO 内部运行时会引发 CORS 错误,他们的技术支持人员表示,当 API 返回错误响应时,CORS 存在一些问题。在我的研究中,它会引发 404 错误。我不知道为什么它会引发该错误。在某些端口上的 localhost 中运行时出现相同的 CORS 错误,他们报告说他们有一些端口问题。即使在 CloudFront 上托管后,也是相同的 CORS 错误,无法弄清楚其他任何事情。
2021-03-24 17:49:27

我想指出的是,如果您使用http://freegeoip.net/,则无需向其提供客户端位置的 IP 地址。试试这些:

1) http://freegeoip.net/xml/

2) http://freegeoip.net/json/

3) http://freegeoip.net/csv/

但是,我无法通过 AJAX 调用检索信息,可能是因为某些跨域策略。显然,他们不允许公众访问他们的系统。

这已经被关闭了。
2021-04-05 17:49:27
您刚刚为我节省了大量通过 JavaScript 获取 IP 地址的工作!
2021-04-06 17:49:27

以防万一你不能完成上面的代码,这里有一个简单的使用 jquery 的方法:

$.getJSON("http://www.geoplugin.net/json.gp?jsoncallback=?",
    function (data) {
        for (var i in data) {
            document.write('data["i"] = ' + i + '<br/>');
        }
    }
);
此服务没有 SSL - 因此被 Chrome 等阻止...
2021-03-15 17:49:27
新的 url 是geoplugin.net/json.gp,IP 不是必需的,但它不如 freegeoip 精确(经纬度)
2021-04-14 17:49:27
@CFPSupport 是的,这些天 http 请求被阻止,所以我们可能会,他们有 https 支持,但它会花费geoplugin.com/premium#ssl_access_per_year
2021-04-14 17:49:27