我无法在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 Access-Control错误,但不会在Chrome中返回。 CORS根本不起作用。
看到CORS not working at all,实现了'工作'答案,完全相同的错误,只有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)
链接页面在浏览器中加载正常。
答案 0 :(得分:4)
使用其他网址似乎工作正常。问题在于/resolve.json
,它使用302重定向将您发送到正确的API网址,并且不会与Safari一起使用。
根据SoundCloud API文档:
当您只知道SoundCloud.com网址时,解析资源允许您查找和访问API资源。
如果您不需要此功能,我建议您直接使用该网址。这是一个有效的例子。
$.getJSON("https://api.soundcloud.com/playlists/17235000.json?client_id=CLIENT_ID",
function( data ) {
console.log(data);
});