为什么我无法使用JavaScript发出API请求?

时间:2016-07-06 04:22:48

标签: javascript api

当我输入此网址时,https://www.codewars.com/api/v1/code-challenges/valid-braces?access_key=apiKey(apiKey是实际密钥的变量),在我的浏览器中,我能够查看JSON中显示的数据。但是,我继续在我的控制台中收到此错误消息:

XMLHttpRequest无法加载https://www.codewars.com/api/v1/code-challenges/valid-braces?access_key=apiKey。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源''因此不允许访问。

这是我目前的要求:

$.ajax({
  type: 'GET',
  dataType: 'json',
  url: 'https://www.codewars.com/api/v1/code-challenges/valid-braces?access_key=apiKey',
  success: function(data) {
    console.log(data);
  },
  error: function() {
    console.log('failed');
  }
});  

1 个答案:

答案 0 :(得分:0)

API应在响应标头上添加Access-Control-Allow-Origin: http://yourdomain.com*可用于允许所有域名。

How does Access-Control-Allow-Origin header work?谈论它是如何运作的

更新:使用JSONP可能不是正确的方法,但如果你真的需要试试这个

$.ajax({
  url: 'https://www.codewars.com/api/v1/code-challenges/valid-braces?access_key=apiKey&callback=',
  dataType: 'JSONP',
  type: 'GET',
  async: false,
  crossDomain: true,
  success: function () {}, // don't use this, as this will never get executed
  error: function () {},  // don't use this, as this gets executed for each request
  complete: function (data) {
  //a hack to handle request status
    if (data.readyState == '4' && data.status == '200') {
     alert('SUCCESS');
    }
    else {
     alert('FAIL');
    }
  }
});