2017-03-08 260 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