我使用这种方法从freegeoip.net询问地理数据:
getGeodata: function(log){
var geoSwitcher = window.geoSwitcher;
var getter = new XMLHttpRequest();
getter.open("GET", this.apiUrl, false );
getter.onreadystatechange = function(){
if (getter.status == 200){
geoSwitcher.response = getter.responseText;
}
else {
geoSwitcher.response = "";
}
if (log) {
console.log(geoSwitcher.response);
}
};
getter.send();
},
在大多数情况下,它可以正常工作,但有些用户会收到错误:
XMLHttpRequest无法加载https://freegeoip.net/json/。对预检请求的响应没有通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上。起源' http://url_was.here'因此不允许访问。
没有' access-control-allow-origin'标题和这个错误不应该在这里(并且在大多数情况下没有错误)。只有一些浏览器会自动添加此标题。
有人知道如何解决这个问题吗?
UPD:apiUrl:" https://freegeoip.net/json/"
UPD2:方法在大多数情况下都可以使用,就像它粘贴的那样。我理解什么是引用者。问题是为什么这个代码在某些情况下抛出异常,而不是什么是HTTP-referer。
旧的freegeoip API现已弃用,将于2018年7月1日停止使用。有关详细信息,请访问:https://github.com/apilayer/freegeoip#readme