我尝试从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 *".
我不确定如何设置此指令以允许播放此文件,而我无法使其生效。
有什么想法吗?提前谢谢!
答案 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'"/>