2013-02-26 30 views
3

的SoundCloud的API應當支持CORS我在文檔(http://developers.soundcloud.com/docs/api/guide#crossdomain)讀取。的SoundCloud CORS

但我認爲這是不是這樣的:

XMLHttpRequest cannot load http://ec-media.soundcloud.com/fxguEjG4ax6B.128.mp3?longurldata... Cannot make any requests from null. 

我在做什麼錯?我正在嘗試使用aurora.js + mp3.js播放音樂。

+1

不妨發佈你的代碼。 – user1477388 2013-02-26 21:43:47

+0

這很糟糕,因爲我是HypeMachine-ChromeExtension的維護者,這導致了一些soundcloud歌曲的下載。請讓我知道是否有任何改變。 – Setheron 2015-01-09 15:07:24

回答

1

不幸的是,在那一刻,CORS標頭不上從CDN(ec-media子域)提供的mp3文件啓用。如果您需要通過XHR請求這些文件,則需要使用代理。

CORS標頭是從API返回的JSON數據啓用,但不是的MP3。

如果您嘗試使用Web Audio API,則可以使用mediaElementSource並通過設置src的音頻載入mp3,以用作here中所述的「媒體源」。

+0

好吧,有時似乎XHRHttpRequest有時適用於mp3。我創建了一個適用於Chrome的示例www.zya.cc/scsampler。但不適用於所有鏈接。即使它們是可下載的。這是什麼原因? – zya 2014-01-23 17:03:37

+0

@gryzzly這[不會在Firefox或Safari工作(http://stackoverflow.com/a/23202652/1397319),將[不再在Chrome在不久的將來的工作(https://stackoverflow.com /問題/ 28984883 /不能-分析-soundclouds流式音頻,因爲-的最缺的-CORS政策)。 – idbehold 2015-03-12 21:33:43

2

支持CORS不是全有或全無,服務器端選擇支持特定原點(以及標題和方法)。

在你的情況,你似乎是使從本地文件調用(產地null),例如您通過從文件系統或類似文件中雙擊加載的HTML文檔。顯然他們不允許這樣做。

+0

噢感謝您的快速回復,我將代碼移到VPS的域名,我明天再試。順便說一下,我現在正在做的是:我有nginx處理域s.co,並修改/ etc/hosts,以便s.co指向127.0.0.1,所以origin不應該爲null,對吧? – ewooycom 2013-02-26 21:49:23

+1

@ user1188570:它不應該是'null' ***如果你是從'http:// s.co'加載頁面,否。 – 2013-02-26 21:50:51