2016-11-05 151 views
0

我想使用Soundcloud窗口小部件API找到hereSoundCloud跨源请求被阻止在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'不匹配'')。*消息,并且歌曲无法播放。

这是为什么?

回答

0

问题出自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); 

... 

如果有人有更好的方法来解决它。我在等待

+0

SO不是建议论坛。您已回答您的问题,请将其标为正确。 – Soviut

+0

不,它不是。我只是解决了我的问题。但是,每次播放新歌曲时,都会生成一个iframe,这对我来说看起来代价高昂。我希望我能得到更好的答案。直到2天之后,我才能回答我的答案。 – user3502626

相关问题