CORS для SoundCloud API не работает для некоторых запросов

Я новичок в 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?

Лучше, если вы уберете свой идентификатор клиента из кода

LucaP 16.04.2018 09:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
608
1

Ответы 1

Я считаю, что вы можете вызывать 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')

Другие вопросы по теме