web-dev-qa-db-fra.com

Objet blob src Content-Security-Policy

Lorsque j'utilise une politique de sécurité du contenu et j'essaie de suivre un processus en Chrome 41 (beta) en utilisant window.URL.createObjectURL j'obtiens une erreur comme la suivante :

Refus de charger les données du plug-in à partir de 'blob: http% 3A // localhost% 3A7000/f59612b8-c760-43a4-98cd-fe2a44648393' car il enfreint la directive de stratégie de sécurité du contenu suivante: "objet-src blob: // *"

Avec une politique de sécurité du contenu qui limite object-src ou autrement default-src on peut reproduire le problème (avec jQuery pour plus de commodité) comme ceci:

blob = new Blob(
   ["%PDF-1.\ntrailer<</Root<</Pages<</Kids[<</MediaBox[0 0 3 3]>>]>>>>>>"],
   { type: "application/pdf" })
$("<embed>").attr("src", window.URL.createObjectURL(blob))
  .appendTo(document.body)

Il semble de la spécification que cela devrait fonctionner , comme pour data://*. J'ai aussi essayé blob, blob:, blob:*, blob:http*, blob:http:*, blob:http://*, mais en vain.

Ce qui fonctionne, mais pour des raisons apparentes n'est pas souhaitable, c'est object-src *.

Quelqu'un a-t-il réussi à charger des blobs avec une stratégie de sécurité de contenu? Est-ce un problème en amont ou ai-je oublié quelque chose?

28
Brian M. Hunt

La réponse conforme aux spécifications est object-src 'self' blob:

blob: ne doit correspondre qu'à blob: explicitement et non 'self' ou *. Il s'agit d'un bogue dans Chrome , et a récemment été corrigé dans Firefox 40.

42
Adria

Pour Chrome 47.0.2526.73:

défaut-src * blob :;

travaillé pour moi

7
grigno