getJSON函数仅从localhost上的url获取数据

问题描述 投票:1回答:1

我使用下面的函数从api获取大陆代码,该代码在localhost上工作正常,但在网站的实时环境中失败

$.getJSON('//www.geoplugin.net/json.gp?jsoncallback=?', function (data) {
  // console.log(JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data.geoplugin_continentCode));
});

我在Console中看到的警告是

加载源“https://www.geoplugin.net/json.gp?jsoncallback=jQuery16407901144106031991_1537089290623&_=1537089292750”失败。

我不知道为什么它在网站https://www.example.com上失败了

可能SSL版本的一些问题,因为我不确定,因为我在小提琴上尝试它,它工作正常http://jsfiddle.net/om8ahkp3/

UPDATE

由于问题是由于跨域问题,因为这个api使用了不同的sll版本的URL。我无法使用这个ssl版本,因为它不是免费的。

所以最终使用另一个api,其中有免费选项也限制为每月50k请求。

$.ajax({
                url: 'https://api.ipgeolocation.io/ipgeo?fields=is_eu& excludes=ip&apiKey=YOURKEY',
                dataType: 'json',
                success: function (json) {
                    console.log("json.is_eu " + json.is_eu);
                }
            });
javascript jquery api getjson
1个回答
3
投票

整个问题是什么?您想要访问第三个站点(crossDomain)。因此,该网站决定您是否可以访问它。当站点提供服务(您使用它的类似geo服务)时,它确定它的哪些部分服务是免费的。

在您的情况下,如果您的源站点的协议是http(如localhost)和dest站点(服务提供商站点)也是http,您可以使用上面的代码访问此地理服务(因为此第三个站点现在允许这样做)。但是如果你想从https网站访问这项服务(我想你现在正在尝试这个),geoPlugin不允许你轻松或免费!

在这种情况下,目标站点提供另一个urls并定义用户级别(为特殊服务获取资金)。

在行为中,如果您的dest站点也适合您自己(在这种情况下不是这样),您可以添加对特定引用站点的所需访问权限,但现在......

我看看它的网站是肯定的。在这种情况下,您必须使用此URL:

https://ssl.geoplugin.net/json.gp?k=yourAPICode

但这不是全部!上面的网址是什么k?本网站writes:“对于SSL访问,需要API密钥来抵消证书价格,每年收费12欧元。”

我不知道,但如果你需要它,你应该搜索免费插件(如果存在)或购买它。

© www.soinside.com 2019 - 2024. All rights reserved.