Я новичок в Javascript и не уверен, что делаю здесь не так.
Моя цель - получить список связанных треков SoundCloud для указанного трека (с его идентификатором) через SoundCloud API. Выполняя свой XMLHttpRequest, я получил эту ошибку:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:49458' is therefore not allowed access. The response had HTTP status code 500.
Итак, при поиске я обнаружил, что это должно иметь какое-то отношение к заголовку CORS, который 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. XMLHttpRequests для https://api.soundcloud.com/tracks?client_id=1dff55bf515582dc759594dac5ba46e9&q= работают нормально.
Что я здесь делаю не так?
Или я просто дурак и это потому, что тестирую с localhost?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я считаю, что вы можете вызывать API с недопустимым soundcloudId. Взглянув на Документация /tracks в документации SoundCloud, есть пример идентификатора дорожки. Когда я вызываю с его помощью вашу функцию, все успешно.
Так что дайте вашей функции вызов со следующим идентификатором 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.info(xhr.response)
}, false);
xhr.send();
}
// works
getRelated('13158665')
// error you described
getRelated('random id')
Лучше, если вы уберете свой идентификатор клиента из кода