Cordova - CSP拒绝加载媒体blob

时间:2017-03-08 13:22:28

标签: javascript android cordova content-security-policy

我尝试从HTTP POST请求加载获取一些音频数据,然后从Android设备播放。这是处理该操作的代码:

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 *".

我不确定如何设置此指令以允许播放此文件,而我无法使其生效。

有什么想法吗?提前谢谢!

2 个答案:

答案 0 :(得分:5)

正如评论中所指出的:将blob:修饰符添加到内容安全策略应该可以解决问题。你的media-src指令看起来像这样:media-src * blob:假设它之前是media-src *

有关media-src指令的更多信息,请访问developer.mozilla.org

答案 1 :(得分:1)

我在meta标签下面的电子应用遇到了相同的问题

  <meta http-equiv="Content-Security-Policy" content="default-src 'self' file: data: blob: filesystem:; default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"/>