2014-01-09 5 views
7

Я просто не могу получить ответ json в Safari, вызвав API SoundCloud.Перекрестные запросы домена, не работающие с SoundCloud в Safari

var inputSet={url:setUrl}, 
    clientId={client_id:client_id}; 
$.getJSON("https://api.soundcloud.com/resolve.json", $.extend(inputSet, clientId), function(data) { 
console.log(data); 
});

Это возвращает ошибку управления доступом в Safari, но не в Chrome. CORS не работает вообще.

Пила CORS not working at all, реализованный «рабочий» ответ, точно такая же ошибка, только Safari.

добавление параметра обратного вызова не возвращает эту ошибку, однако возвращает ошибку ajax "parsererror" SyntaxError {}, которая, как я полагаю, обусловлена ​​тем, что ответ все еще является json, а не jsonp. Это не работает ни в браузере.

Как она стоит, я не могу получить этот запрос перекрестного домена работает в хроме, даже если документы

https://developers.soundcloud.com/docs#crossdomain

сказать, что я могу.

Safari вкладки Сеть: Safari

Safari ответ:

[Error] Failed to load resource: Origin https://seam.li is not allowed by Access-Control-Allow-Origin. (17235000.json, line 0) 
[Error] XMLHttpRequest cannot load https://api.soundcloud.com/playlists/17235000.json?client_id=CLIENT_ID. Origin https://seam.li is not allowed by Access-Control-Allow-Origin. (seam.li, line 0)

Linked страница загружается нормально в браузере.

+0

Что показывает вкладка «Сеть» в Chrome? – Gelatin

+0

Не уверен, что вы имеете в виду Safari, поскольку Chrome работает, но вызовы api возвращают 200, 302 или 304 на Chrome –

+0

Обновлено с изображением сети Safari –

ответ

4

Использование других URL-адресов, похоже, работает нормально. Проблема заключается в /resolve.json, где он использует перенаправление 302, чтобы отправить вам правильный URL-адрес API, и он не джайв с Safari.

Согласно API Doc SoundCloud:

Решимость ресурс позволяет для поиска и API доступа к ресурсам, когда вы знаете только URL SoundCloud.com.

Если вам не нужна эта функциональность, я предлагаю использовать URL-адрес напрямую. Вот рабочий пример.

$.getJSON("https://api.soundcloud.com/playlists/17235000.json?client_id=CLIENT_ID", 
    function(data) { 
     console.log(data); 
}); 
+0

К сожалению, мне нужны функции разрешения. Это зависит от того, как пользователь вводит URL-адрес в набор SoundCloud, а затем выполняет его сервис. Я, к сожалению, не могу разумно попросить их ввести псевдоним плейлиста :( –

+0

Вам понадобится прокси-сервер CORS –

+0

Хм, я посмотрю, что –

Смежные вопросы