Estoy frente a un problema con CSP en mi extensión ...tema CSP con createObjectURL en WebkitBlobBuilder
utilizo un script de contenido con el fin de cambiar las imágenes en las páginas web. Mi script contenido fue añadiendo sus propias imágenes a sitios web así que tenía la siguiente advertencia:
[Report Only] Refused to load image from 'chrome://extension/xxx/...'
because of Content-Security-Policy.
The page at https://plus.google.com/u/0/hot displayed insecure content
from chrome://extension/xxx/....
por lo que añade la siguiente línea al manifiesta:
"content_security_policy": "default-src *"
y la advertencia desapareció ...
Ahora, tengo que modificar las imágenes, para hacer eso, las escribo en un lienzo, obtengo el dataURL y lo convierto en un WebkitBlobBuilder para evitar la pérdida de memoria debido al cambio de src en la etiqueta img (con un blob, puedo revocar una vez que se ha usado y se liberó la memoria ...)
parte del código:
//Code to create a blob from dataURI
base.dataURItoBlob = function(dataURI, callback) {
var byteString;
if (dataURI.split(',')[0].indexOf('base64') >= 0)
byteString = atob(dataURI.split(',')[1]);
else
byteString = unescape(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
var bb = new WebKitBlobBuilder();
bb.append(ab);
return bb.getBlob(mimeString);
};
//Code to display the blob on an image :
//Write image on a canvas :
base.ctx.putImageData(cData, img.leftPos, img.topPos);
//Get a blob
var blobData = base.dataURItoBlob(base.canvas.toDataURL("image/png"));
//Create an URL from the blob
var urlfile = window.webkitURL.createObjectURL(dataBlob);
//set it on the img tag
img.attr("src", urlfile);
//Revoke the blob once loaded
img.load(function() {
window.webkitURL.revokeObjectURL(urlfile);
});
Este código funciona muy bien .... No hay más pérdida de memoria debido a un cambio en mi src etiqueta img.
pero tengo esta advertencia:
[Report Only] Refused to load image from 'blob:https%3A%2F
%2Fplus.google.com/52ac1648-64d6-4fce-bb35-537d939d5007' because of
Content-Security-Policy.
The page at https://plus.google.com/u/0/hot displayed insecure content
from blob:https%3A%2F%2Fplus.google.com/52ac1648-64d6-4fce-
bb35-537d939d5007.
¿Por qué SRC-defecto, el contenido de la política no se aplica a manchas ??
Gracias!
Parece que esto podría ser un error en la implementación de CSP, por lo que puedo decir, blobs deben ser reconocidos como un esquema válido: ¿puedes archivar un error en http://new.crbug.com/? –