2015-08-23 6 views
17

Ecco il mio Content-Security-Policy in index.html'img-src' non è stato impostato in modo esplicito, in modo da 'default-src' è usato come ripiego

<meta http-equiv="Content-Security-Policy" content="default-src 'self' http://example.com"> 

Ora sto dinamicamente installando img src di <img id="updateProfilePicPreview" class="profilPicPreview" src="" /> come

var smallImage = document.getElementById('updateProfilePicPreview'); 
    smallImage.style.display = 'block'; 
    smallImage.src = "data:image/jpeg;base64," + imageData; 

Essa mostra

rifiutato per caricare l'immagine 'dati: image/jpeg; base64,/9 J/4AAQSkZJRgABAQAAAQ ABAAD/2wBDACgcHiMeGSgjISMtKygw ... p + tB/yaKKAIi2TSfjRRVCJFOyIk96rE5NFFDGgoooqBhRRRQA9elIDg5oopgIc + lFFFAH/2Q == 'perché viola la seguente direttiva Content Security Policy: "default-src' self 'http://example.com". Nota che 'img-src' non è stato impostato in modo esplicito, quindi 'default-src' è usato come fallback.

Quindi, come posso abilitare l'impostazione img src in modo dinamico?

stavo seguendo questo esempio da pagina Cordova:

var pictureSource; // picture source 
var destinationType; // sets the format of returned value 

// Wait for device API libraries to load 
// 
document.addEventListener("deviceready",onDeviceReady,false); 

// device APIs are available 
// 
function onDeviceReady() { 
    pictureSource=navigator.camera.PictureSourceType; 
    destinationType=navigator.camera.DestinationType; 
} 

// Called when a photo is successfully retrieved 
// 
function onPhotoDataSuccess(imageData) { 
    // Uncomment to view the base64-encoded image data 
    // console.log(imageData); 

    // Get image handle 
    // 
    var smallImage = document.getElementById('smallImage'); 

    // Unhide image elements 
    // 
    smallImage.style.display = 'block'; 

    // Show the captured photo 
    // The in-line CSS rules are used to resize the image 
    // 
    smallImage.src = "data:image/jpeg;base64," + imageData; 
} 

// Called when a photo is successfully retrieved 
// 
function onPhotoURISuccess(imageURI) { 
    // Uncomment to view the image file URI 
    // console.log(imageURI); 

    // Get image handle 
    // 
    var largeImage = document.getElementById('largeImage'); 

    // Unhide image elements 
    // 
    largeImage.style.display = 'block'; 

    // Show the captured photo 
    // The in-line CSS rules are used to resize the image 
    // 
    largeImage.src = imageURI; 
} 

// A button will call this function 
// 
function capturePhoto() { 
    // Take picture using device camera and retrieve image as base64-encoded string 
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, 
    destinationType: destinationType.DATA_URL }); 
} 

// A button will call this function 
// 
function capturePhotoEdit() { 
    // Take picture using device camera, allow edit, and retrieve image as base64-encoded string 
    navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true, 
    destinationType: destinationType.DATA_URL }); 
} 

// A button will call this function 
// 
function getPhoto(source) { 
    // Retrieve image file location from specified source 
    navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, 
    destinationType: destinationType.FILE_URI, 
    sourceType: source }); 
} 

// Called if something bad happens. 
// 
function onFail(message) { 
    alert('Failed because: ' + message); 
} 
+0

Quindi qual è la soluzione? Potresti condividere più in dettaglio grazie! –

risposta

45

Così come posso abilitare l'impostazione img src dinamicamente?

Il problema non è l'impostazione di src, il problema è impostare l'src su un dato: schema URI.

Aggiungi data: all'elenco di cose consentito dallo content security policy. O per default-src o potresti definire un img-src separato.

Nell'esempio seguente, ho aggiunto img-src 'self' data:; all'inizio del metatag nel file index.html.

<meta http-equiv="Content-Security-Policy" content="img-src 'self' data:; default-src 'self' http://XX.XX.XX.XX:8084/mypp/"> 
+0

Sto riscontrando lo stesso problema nella mia app Ionic. Il ng-src può essere sia link64 base che normale. Tutto il Base64 lancia lo stesso errore. Puoi spiegare più dettagliatamente come "Aggiungi dati: alla lista delle cose consentite dalla politica di sicurezza del contenuto." O per l'src predefinito o potresti definire un img-src separato. " ?? –

+3

try '' – manish

+6

cos'è '' myapp "in" http: //XX.XX.XX.XX: 8084/mypp "per favore menziona –

Problemi correlati