2017-03-08 68 views
3

我試圖從HTTP POST請求中獲取一些音頻數據,然後從Android設備上播放它。這是處理該操作的代碼:Cordova - CSP拒絕加載媒體blob

var xhr = new XMLHttpRequest(); 
xhr.open('POST', encodeURI(myURLString), true); 
xhr.responseType = 'blob'; 
xhr.onload = function(evt) { 
    var blob = new Blob([xhr.response], {type: 'audio/wav'}); 
    var audio = new Audio(); 
    audio.src = URL.createObjectURL(blob); 
    audio.play(); 
}; 
xhr.send(myData); 

當我運行它,我得到以下錯誤:

Refused to load media from 'blob:file:///d181cef8-136d-4dab-b5c6-598a0481755c' 
because it violates the following Content Security Policy directive: "media-src *". 

我不知道如何設置這個指令,以允許該文件是玩,我無法得到這個工作。

任何想法?提前致謝!

+0

完全取消該指令看起來可行,但似乎很難找到正確的解決方案。是嗎? –

+0

您可能需要將'blob:'修飾符添加到media-src指令,如'media-src * blob:'。 [進一步閱讀](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/media-src) – Phonolog

+0

@Phonolog完美!感謝您的鏈接了。如果您將它作爲一個發佈,我會接受這個答案。 –

回答

3

正如在評論中指出的那樣:將blob:修飾符添加到您的內容安全策略應該可以解決問題。您的media-src指令可能如下所示:media-src * blob:

有關media-src指令的更多信息,請參見developer.mozilla.org