在页面加载时,我试图根据访问者IP获取坐标,使用ipinfo:
等服务const request = await fetch("https://ipinfo.io/json?token=TOKEN", {
method: 'GET',
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
"charset": "utf-8"
});
这在Brave中是预期的。在Chrome浏览器中,请求被客户端"阻止"。在Firefox中,由于CORS,请求失败。
添加cors-anywhere url也不可行,因为它返回cors-anywhere url服务的位置坐标(而不是访问者)。
如何让geoIP在Chrome和Firefox上工作?是否有任何服务倾向于更好地工作-特别是对于来自localhost
的请求的开发环境?
我通过首先获取访问者的IP来解决这个问题,使用api.ipify.org(前面有一个cors-anywhere url),然后将IP地址插入IP信息的获取查询中。下面是代码:
const ip = await fetch("https://[CORS-ANYWHERE-URL]/https://api.ipify.org?format=json&callback=getIP");
const ip_json = await ip.json();
console.log(ip_json);
const request = await fetch(`https://[CORS-ANYWHERE-URL]/ipinfo.io/${ip_json["ip"]}/geo?token=TOKEN`, {
method: 'GET',
"Access-Control-Allow-Origin": "",
"Content-Type": "application/json",
"charset": "utf-8"
});