我正在嘗試向SoundCloud API發出請求。然後,當我得到響應時,我將stream_url設置爲一個< audio>元素的來源。SoundCloud Api重定向混淆和音頻Api流
這工作:
但並非總是如此。當你搜索「倭」例如,你可以玩的第一個幾首曲目,沒有任何問題。但是當你嘗試播放'倫敦語法 - 嘿現在(倭黑猩猩混音)' - 第7個結果 - 它不會播放。它不會帶來任何錯誤。
我一直在修改Chrome的webdev工具,並在網絡標籤下看到所做的請求。我發現,確實發揮軌道有一個簡短的請求的URL,就像這樣:
https://ec-media.sndcdn.com/vR5ukuOzyLbw.128.mp3?f10880d39085a94a0418a7ef69b03d522cd6dfee9399eeb9a522029f6bfab939b9ae57af14bba24e44e1542924c205ad28a52352010cd0e7dd461e9243ab54dc0f0bba897d
而那些不看這樣的:
https://cf-media.sndcdn.com/8PCswwlkswOd.128.mp3?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiKjovL2NmLW1lZGlhLnNuZGNkbi5jb20vOFBDc3d3bGtzd09kLjEyOC5tcDMiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MzM0Mjc2MDN9fX1dfQ__&Signature=cD-XVhnvQnIATkfrBDDVy0Q7996C8DymwxRLwBBduab0~L0MynF1ftcMky~21T8Q-gCZ2~dMK8dz7uVxvJTIJgXPxEZvhNtbvescMK6iFMg-xSAty-4OhJYjrIZJ2j8NE4uNA4Ml7MWbWcQw4KtUtpZitOQuguS3DPFDII3VF-dvzb2L~xG-G8Uu3uOnI1WhnAAfhf1QWMO7swwB89HtcCiuVBmfluG28ELrJEq-au8mqIMB3sLTno6nUuTtpHXR2ayXBsYcYLLJVXa3Ul8p1rhLS5XWHKWXY8xug4jwey27~C5PVAomK6Z5lJx-mz-0zYs4riUYtl0zACbZ1OfwTQ__&Key-Pair-Id=APKAJAGZ7VMH2PFPW6UQ
現在,乍一看我想這是一個編碼問題,但在ajax url周圍包裝一個快速的encodeURI()不起作用。
此外,我不明白這些網址來自哪裏。在我的代碼,我引向我的Ajax請求,例如:
https://api.soundcloud.com/tracks/140326936/stream?client_id=5c6ceaa17461a1c79d503b345a26a54e
因此,在GET請求中請求URL(下Chrome的Webdev的工具「網絡」作爲中)是沒有意義的我。 SoundCloud是否將請求重定向到CDN主機?我注意到的另一件事是,每次TWO請求被解僱而不是一個。第一個總是被取消,並且包含「臨時標題顯示」警告。我相信這是因爲我設置了crossOrigin =「anonymous」,否則某些瀏覽器不會加載內容。
我猜可能會導致問題是,當URL設置爲元素的src屬性時,在處理音頻Api和播放(https://github.com/jsantell/dancer.js/)的dancer.js庫中觸發了一個evenListener。這可能是encodeURI()在庫中的某處需要的。
我決定要問的問題,無論如何,因爲我不明白是怎麼URL請求的上方形成和爲什麼是兩個,而不是一個請求被解僱,爲什麼第一個總是被取消。
這我解決播放問題任何提示非常歡迎太多......
謝謝,很好的回覆!這清除了一切。從你提到的內容來看,我有一種預感,認爲Access-Control標題中的差異是由版權問題引起的。爲了證明這一點:像50 Cent這樣的大牌藝術家通常會遇到這個問題。我想他們設置了一些「只允許在SoundCloud上播放音軌」的設置。如果是這種情況,那麼在響應中應該有一個值表示這個...如果我找到了修復程序,將會更新 – matthiasdv