在页面加载时,我尝试使用ipinfo这样的服务来获取基于访问者IP的坐标:
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和火狐上工作?在请求来自localhost的开发环境中,是否有更适合此- especially的服务
发布于 2021-10-26 16:29:21
我解决了这个问题,首先获取访问者的IP,使用api.ipify.org (前面有cors-anywhere url ),然后将ip地址插入到获取ip信息的fetch查询中。代码如下:
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"
});https://stackoverflow.com/questions/69726121
复制相似问题