JS XMLHttpRequest麻烦,可能是CORS头

时间:2017-11-09 08:45:45

标签: javascript http cors

我使用这种方法从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

0 个答案:

没有答案