【发布时间】:2019-02-20 11:47:19
【问题描述】:
我使用以下函数从 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));
});
我在控制台中看到的警告是
with 源加载失败 “https://www.geoplugin.net/json.gp?jsoncallback=jQuery16407901144106031991_1537089290623&_=1537089292750”。
我不知道为什么它在网站 https://www.example.com 上失败了
SSL 版本可能会出现一些问题,因为我不确定,因为我在 fiddle 上尝试过它,它工作正常 http://jsfiddle.net/om8ahkp3/
更新
因为问题是由于跨域问题,因为这个 api 使用了不同的 url 用于 ssl 版本。我无法使用这个 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);
}
});
【问题讨论】:
-
乍一看,我在您的 example.com 中找不到此代码。如果您忘记添加,则应将此代码添加到您的网站。
-
您是否正在运行一个广告拦截器,它对
localhost有一个例外,但对您的实时网站却没有? -
我的代码正是示例一中显示的内容,黄色是控制台窗口中显示的警告。我也没有广告拦截器。从 url 中删除
?jsoncallback=?this 后,它现在给我跨浏览器警告Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.geoplugin.net/json.gp. (Reason: CORS request did not succeed) -
为什么要删除
jsoncallback? -
查看它是否有效或产生不同的错误?
标签: javascript jquery api getjson