XMLHttpRequest'Access-Control-Allow-Origin'错误

时间:2018-02-16 23:40:56

标签: javascript jquery http

我正在编写一个基于Web的应用程序,我需要访问在线托管的txt文件并读取该文件。我正在使用以下代码来执行此操作:

{'1950004S11059': defaultdict(list,
             {'GPS': [
               (-11.1, 59.1),
               (-11.6, 57.8),
               (-12.4, 56.0),
               (-13.2, 54.6),
               (-13.8, 53.8),
               (-14.8, 52.7),
               (-15.9, 52.0),
               (-18.3, 52.4),
               (-20.0, 54.0),
               (-22.1, 55.9),
               (-26.2, 59.8)]}),
 '1950012S14150': defaultdict(list,
             {'GPS': [
               (-14.0, 146.9),
               (-14.4, 145.8),
               (-14.9, 145.4),
               (-15.8, 145.6),
               (-18.9, 149.1),
               (-22.3, 152.5)]}),
 '1950013S14139': defaultdict(list, 
             {'GPS': [
               (-16.0, 139.0), 
               (-16.3, 139.0)]})}

我收到了这个错误:

  

无法加载https://bahadorsaket.com/others/ranking.txt:否   请求中存在“Access-Control-Allow-Origin”标头   资源。因此,不允许原点'null'访问。

搜索并阅读this post后,我尝试将代码更改为此。

var oReq = new XMLHttpRequest();
  oReq.addEventListener("load", function(){
     // parse the file
  }
})
oReq.open("GET","https://bahadorsaket.com/others/ranking.txt");
oReq.send();

这次我收到了这个错误:

  

无法在'XMLHttpRequest'上执行'setRequestHeader':对象的   国家必须开放。

知道如何解决这个问题吗?我对这些东西都很陌生!!!

2 个答案:

答案 0 :(得分:1)

虽然不是最好的方法,但您也可以使用代理。

--- no python application found, check your startup logs for errors ---

我过去曾经使用过这款产品,效果非常好。

取自this post.

答案 1 :(得分:1)

对于特定错误:

无法对'XMLHttpRequest'执行'setRequestHeader':对象的状态必须为OPENED。

这是因为您要在调用open对象上的XMLHttpRequest方法之前设置标题。重新排序可解决该特定错误:

var oReq = new XMLHttpRequest();
  oReq.addEventListener("load", function(){
     // parse the file
  }
})
oReq.open("GET","https://bahadorsaket.com/others/ranking.txt");
oReq.setRequestHeader( 'Access-Control-Allow-Origin', '*');
oReq.send();

但是,就像其他人提到的那样,如果后端服务器未配置为支持CORS,那么您可能会面临其他问题。