【发布时间】:2018-01-19 09:53:51
【问题描述】:
我正在努力解决的确切错误是“对预检请求的响应未通过访问控制检查:所请求的资源上不存在'Access-Control-Allow-Origin'标头。因此没有来源'null'允许访问。”。
我正在尝试使用 JavaScript 从 https://api.kraken.com/0/public/OHLC?pair=ETHEUR 获取 JSON 数据。为此,我创建了一个 XMLHttpRequest 对象,并将 GET 指定为请求类型。这应该是一个简单的请求,但是错误表明发送了预检请求。这种行为的原因是什么?话虽这么说,为了解决这个错误,我尝试设置一个请求标头,在其中我指定“*”作为 Access-Control-Allow-Origin 的值,但我仍然收到错误消息。我查看了对与我类似的问题的回答,但无法弄清楚如何解决我正在处理的问题。这可能是由于对 JavaScript 还是很陌生。不管怎样,下面是我写的代码:
var requestURL = 'https://api.kraken.com/0/public/OHLC?pair=ETHEUR'
var request = new XMLHttpRequest();
request.open('GET',requestURL,true);
request.responseType = 'json';
request.onload = function(){
var data = request.response;
console.log(data);
}
request.setRequestHeader('Access-Control-Allow-Origin','*');
request.send();
【问题讨论】:
-
request.setRequestHeader('Access-Control-Allow-Origin','*')的目的是什么? -
这个错误告诉我提供一个 Access-Control-Allow-Origin,因此我添加了那行代码。显然,它并没有解决问题。
-
错误通知您请求的资源没有
Access-Control-Allow-Origin标头“请求的资源上不存在'Access-Control-Allow-Origin'标头。” 你想从file:协议中创建一个XMLHttpRequest()吗? -
是的,我该怎么做呢? (我假设使用 file: 协议,您的意思是发送请求的域是我编写上述代码的文件的路径。)
-
在 Chrome、Chromium 浏览器中,您可以启动带有
--allow-file-access-from-files标志的新浏览器实例,请参阅 Read local XML with JS
标签: javascript xmlhttprequest cors preflight