2017-03-08 6 views
3

Ich versuche, einige Audiodaten von einer HTTP-POST-Anfrage zu laden und dann von einem Android-Gerät abzuspielen. Dies ist der Code, der diese Operation behandelt:Cordova - CSP weigert sich, Medienblob zu laden

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); 

Wenn ich es laufen, bekomme ich folgende Fehlermeldung:

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

Ich bin nicht sicher, wie diese Richtlinie festgelegt, diese Datei zu erlauben, zu sein gespielt, und ich kann das nicht zur Arbeit bringen.

Irgendwelche Ideen? Danke im Voraus!

+0

Die gesamte Richtlinie zu entfernen scheint zu funktionieren, aber es scheint kaum die richtige Lösung zu sein. Ist es? –

+0

Sie müssen möglicherweise den Modifizierer 'blob:' zu Ihrer media-src-Anweisung hinzufügen, wie 'media-src * blob:'. [Weiterführende Literatur] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/media-src) – Phonolog

+0

@Phonolog Perfect! Danke für den Link auch. Ich akzeptiere dies als eine Antwort, wenn Sie es als eins veröffentlichen. –

Antwort

3

Wie bereits im Kommentar erwähnt: Das Hinzufügen des Modifikators blob: zu Ihrer Inhaltssicherheitsrichtlinie sollte das Problem beheben. Ihre media-src-Anweisung könnte etwa so aussehen: media-src * blob:

Weitere Informationen zur media-src-Richtlinie finden Sie unter developer.mozilla.org.

Verwandte Themen