【问题标题】:CORS for SoundCloud API doesn't work for some requestsSoundCloud API 的 CORS 不适用于某些请求
【发布时间】:2018-09-24 21:17:11
【问题描述】:

我对 Javascript 还是很陌生,我不确定我在这里做错了什么。

我的目标是通过 SoundCloud API 检索指定曲目(带有它的 id)的相关 SoundCloud 曲目列表。 在执行 XMLHttpRequest 时出现此错误:

请求中没有“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://127.0.0.1:49458” 使用权。响应的 HTTP 状态代码为 500。

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

查看它所说的 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 进行测试?

【问题讨论】:

  • 最好把你的客户ID从代码中去掉

标签: javascript xmlhttprequest soundcloud


【解决方案1】:

我相信您调用 API 时可能使用了无效的 soundcloudId。查看/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')

【讨论】:

    猜你喜欢
    • 2017-06-20
    • 2021-09-19
    • 1970-01-01
    • 2016-02-16
    • 2023-01-16
    • 2014-09-05
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    相关资源
    最近更新 更多