SoundCloud跨源请求被阻止在https://l9bjkkhaycw6f8f4.soundcloud.com/v1/events
问题描述:
我想使用Soundcloud窗口小部件API找到here。SoundCloud跨源请求被阻止在https://l9bjkkhaycw6f8f4.soundcloud.com/v1/events
我有我的iFrame
<iframe id="SCIframe"></iframe
我包括脚本
<script src="https://w.soundcloud.com/player/api.js" type="text/javascript"></script>
然后,我在一个函数执行这个脚本。
var scPlayer;
var iframeSoundcloud = document.getElementById("SCIframe");
iframeSoundcloud.src = "https://w.soundcloud.com/player/?url="+encodeURIComponent(lien);
scPlayer = SC.Widget("SCIframe");
scPlayer.bind(SC.Widget.Events.READY, function(){
scPlayer.play();
});
当页面第一次加载时,soundcloud歌曲播放良好。但是,如果我在不刷新页面的情况下再次调用它,我会得到跨源请求被阻止:同源策略不允许在https://l9bjkkhaycw6f8f4.soundcloud.com/v1/events处读取远程资源。 (原因:CORS头'Access-Control-Allow-Origin'不匹配'')。*消息,并且歌曲无法播放。
这是为什么?
答
问题出自Iframe。每次我想播放一首新歌时,我都会生成一个新的Iframe。
var frameSCID = "scIframe"+new Date().getMilliseconds();
var iframeSC = $('<iframe></iframe>');
iframeSC.attr({"id":frameSCID, "src":"https://w.soundcloud.com/player/?url="+encodeURIComponent(lien)});
$("#scIframeContainer").html(iframeSC);
scPlayer = SC.Widget(frameSCID);
...
如果有人有更好的方法来解决它。我在等待
SO不是建议论坛。您已回答您的问题,请将其标为正确。 – Soviut
不,它不是。我只是解决了我的问题。但是,每次播放新歌曲时,都会生成一个iframe,这对我来说看起来代价高昂。我希望我能得到更好的答案。直到2天之后,我才能回答我的答案。 – user3502626