跨域请求不能在Safari中使用SoundCloud

我只是无法在Safari中获得json响应,并调用SoundCloud的API。

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中返回一个Origin访问控制错误,但不会在Chrome中返回。 CORS根本不工作。

看到CORS根本不工作,实现了“工作”答案,完全相同的错误,只有Safari。

添加回调参数不会返回该错误,但会返回ajax错误"parsererror" SyntaxError {} ,我认为这是由于响应仍然是json而不是jsonp。 这在任一浏览器中都不起作用。

就目前而言,我无法在Chrome中使用这个跨域请求,即使是文档

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

说我可以。

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)

链接页面在浏览器中加载正常。


使用其他网址似乎工作正常。 问题在于/resolve.json ,它使用302重定向将您发送到正确的API URL,并且它不会与Safari一起使用。

根据SoundCloud API Doc:

当您只知道SoundCloud.com URL时,解析资源允许您查找和访问API资源。

如果你不需要这个功能,我建议直接使用URL。 这是一个工作示例。

$.getJSON("https://api.soundcloud.com/playlists/17235000.json?client_id=CLIENT_ID", 
    function( data ) {
        console.log(data);
});
链接地址: http://www.djcxy.com/p/76765.html

上一篇: Cross Domain Requests Not Working With SoundCloud in Safari

下一篇: DOM replace entire style attribute (CSSStyleDeclaration) on element