2015-02-12 12 views
14

Podczas korzystania z treści z zabezpieczeniami polityki i staram się śledzić proces w Chrome 41 (beta), używając window.URL.createObjectURL pojawia się błąd jak poniżej:Content-Security-Policy object-src blob

Odmowa aby załadować dane wtyczki z 'blob: http% 3A // localhost% 3A7000/f59612b8-c760-43a4-98cd-fe2a44648393' ponieważ narusza następującą dyrektywę Polityki bezpieczeństwa treści: "obiekt blob: // *"

Z polityką bezpieczeństwa treści ograniczającą object-src lub inaczej default-src można odtworzyć problem (z jQuery for co nvenience) tak:

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) 

Wydaje z the spec that this should work, jak to robi dla data://*. Próbowałem również blob, blob:, blob:*, blob:http*, blob:http:*,, blob:http:*, blob:http://*, ale bez skutku.

Co działa, ale z oczywistych powodów jest niepożądane, to object-src *.

Czy ktoś miał jakiś sukces, aby ładować obiekty typu blob do załadowania z polityką bezpieczeństwa treści? Czy to problem w górę, czy też przeoczyłem coś?

Odpowiedz

22

Spec jest object-src 'self' blob:

blob: należy tylko dopasować blob: jawnie, a nie 'self' lub *. Jest to błąd w Chrome i został niedawno rozwiązany w Firefox 40.

+0

'self-src 'self' blob:' pracował dla mnie. – hungerstar

+0

DZIĘKUJEMY! uratujesz moje życie =) – saike

0

Jednym z obejść wydaje się być użycie object-src 'self'. Odpowiedź zgodny

+0

Według [MDN] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/worker-src) na ' self', "Niektóre przeglądarki wyraźnie wykluczają blob i system plików z dyrektyw źródłowych." Wygląda na to, że Chrome jest jednym z nich. – Keith

1

Dla Chrome 47.0.2526.73:

default-src * blob :;

pracował dla mnie