2017-03-08 8 views
3

HTTP POSTリクエストからオーディオデータを取得してAndroidデバイスから再生しようとしています。Cordova - CSPがメディアブロブの読み込みを拒否します

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 * blob:'のようなmedia-srcディレクティブに追加する必要があるかもしれません。 [さらに読む](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/media-src) – Phonolog

+0

@Phonolog Perfect!リンクありがとう。あなたがそれを1つとして投稿すれば、私はこれを答えとして受け入れます。 –

答えて

3

コメントに指摘されているとおり:blob:修飾子をコンテンツセキュリティポリシーに追加すると、問題が解決するはずです。あなたのmedia-srcディレクティブは次のようになります:media-src * blob:

さらに詳しい情報はdeveloper.mozilla.orgにあります。

関連する問題