Cordova-CSP拒绝加载媒体Blob

Mar*_*oso 6 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);
Run Code Online (Sandbox Code Playgroud)

运行它时,出现以下错误:

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

我不确定如何设置此指令以允许播放此文件,并且我无法使其正常工作。

有任何想法吗?提前致谢!

Pho*_*log 9

blob:修改器添加到您的内容安全策略应该可以解决此问题。您的media-src指令可能看起来像这样:media-src * blob:假设media-src *之前。

可以在developer.mozilla.org中找到有关media-src指令的更多信息。


另外,请注意,使用*通配符通常不是一个好主意。它破坏了白名单的概念,在此进行了描述。我还回答了一个有关如何在此处消除通配符的问题