我使用下面的函数从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.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);
}
});
整个问题是什么?您想要访问第三个站点(crossDomain
)。因此,该网站决定您是否可以访问它。当站点提供服务(您使用它的类似geo
服务)时,它确定它的哪些部分服务是免费的。
在您的情况下,如果您的源站点的协议是http
(如localhost
)和dest站点(服务提供商站点)也是http
,您可以使用上面的代码访问此地理服务(因为此第三个站点现在允许这样做)。但是如果你想从https
网站访问这项服务(我想你现在正在尝试这个),geoPlugin
不允许你轻松或免费!
在这种情况下,目标站点提供另一个url
s并定义用户级别(为特殊服务获取资金)。
在行为中,如果您的dest站点也适合您自己(在这种情况下不是这样),您可以添加对特定引用站点的所需访问权限,但现在......
我看看它的网站是肯定的。在这种情况下,您必须使用此URL:
https://ssl.geoplugin.net/json.gp?k=yourAPICode
但这不是全部!上面的网址是什么k
?本网站writes:“对于SSL访问,需要API密钥来抵消证书价格,每年收费12欧元。”
我不知道,但如果你需要它,你应该搜索免费插件(如果存在)或购买它。