SoundCloud API的CORS不适用于某些请求

时间:2018-04-14 19:09:47

标签: javascript cors xmlhttprequest soundcloud

我对Javascript很新,我不确定我在这里做错了什么。

我的目标是通过SoundCloud API检索指定轨道(带有id)的相关SoundCloud轨道列表。 在做我的XMLHttpRequest时遇到了这个错误:

  

请求时没有'Access-Control-Allow-Origin'标头   资源。因此不允许来源“http://127.0.0.1:49458”   访问。响应的HTTP状态代码为500。

所以从搜索中我发现,它必须与CORS Header有关,SoundCloud用它来使GET请求成为可能。

查看它所说的API文档,错误代码500会在SoundCloud站点上出现内部服务器错误。但我现在已经尝试了一整天,我不敢相信我只是变得不走运。

这是我的请求功能:

function getRelated(soundcloudID) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', "https://api.soundcloud.com/tracks/" + soundcloudID +"/related?client_id=1dff55bf515582dc759594dac5ba46e9", false);
    xhr.addEventListener("load", function() {
        filterBubble.push(JSON.parse(xhr.response));
        }, false);
    xhr.send();
}

我知道这不是执行此类请求的最佳方式,我应该将其更改为回调函数。我会这样做,但我很确定这与它不起作用无关。

该请求也不适用于SoundCloud(https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud:genres:all-music&client_id=1dff55bf515582dc759594dac5ba46e9&q=)上的热门顶级歌曲。

现在有趣的是,我通过API搜索请求没有问题。 https://api.soundcloud.com/tracks?client_id=1dff55bf515582dc759594dac5ba46e9&q=的XMLHttpRequests工作得很好。

我在这里做错了什么?

或者我只是愚蠢,这是因为我正在使用localhost进行测试?

1 个答案:

答案 0 :(得分:0)

我相信您可能使用无效的soundcloudId来调用API。看一下/tracks documentation on the SoundCloud docs,有一个示例曲目ID。当我用它调用你的函数时,一切都会成功。

因此,请使用以下ID 13158665

为您的函数调用

function getRelated(soundcloudID) {
  var xhr = new XMLHttpRequest();
  xhr.open('GET', "https://api.soundcloud.com/tracks/" + soundcloudID + "/related?client_id=1dff55bf515582dc759594dac5ba46e9", false);
  xhr.addEventListener("load", function() {
    console.log(xhr.response)
  }, false);
  xhr.send();
}

// works
getRelated('13158665')

// error you described
getRelated('random id')

相关问题