Próbuję stworzyć pracownik na mojej stronie internetowej:

const url = URL.createObjectURL(blob);
const worker = new Worker(url);

A Safari wyświetla następujący błąd w konsoli:

Odmówił załadowania blob: https://my.address.com/5fa7b5e6-cb10 -4B7C-967B-E95CAE58CD71 ponieważ pojawia się w dyrektywie w dyrektywach dziecięcych-src ani dyrektywy domyślnej-src w polityce bezpieczeństwa treści.

Mam następujący znacznik polityki bezpieczeństwa treści na stronie:

<meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob:">

Ale wygląda jak safari ignoruje go. Założę się, że wypróbowuję wszystkie możliwe kombinacje dyrektyw SCP (takich jak pracownicy-src, obiekt-src, script-src, dziecko-src, etc.) i źródła (*, blob :, "niebezpieczny-eval", "niebezpieczna inlina "itd.)

Doceń wszelkie pomysły!

Uwagi :

  1. Po otwarciu strony internetowej w Safari za pośrednictwem pracownika HTTP jest utworzony bez żadnych błędów. Problem polega na otwarciu przez HTTPS.
  2. Pracownik działa dobrze w Chrome, Firefox, Edge
  3. Mam tylko jeden znacznik polityki zabezpieczeń treści na stronie
  4. Podczas kontroli nagłówków odpowiedzi HTTP w Safari wyglądają dobrze
0
BorisR 14 kwiecień 2021, 19:35

1 odpowiedź

Najlepsza odpowiedź

Safari Nie obsługuje dyrektywy worker-src (V 12) i Po prostu go ignoruje, sprawdź konsolę dla Unrecognized Content Security Policy directive 'worker-src'.

Łańcuch fallback dla worker-src to: child-src - & gt; script-src - & gt; default-src, Dlatego wspierać Safari, musisz użyć child-src z tymi samymi zasadami, co worker-src. child-src blob: działa w Safari (naciśnij przycisk "BLOB:", aby zobaczyć ).

Wiadomość because it appears in neither the child-src directive nor the default-src directive of the Content Security Policy jest niejasna. Czy masz już child-src / default-src z pewnymi zasadami w polityce?
Ponieważ <meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob:"> po prostu ignoruje Safari i nie powinien blokować pracownika.

1
granty 19 kwiecień 2021, 14:01