Я обслуживаю локально сгенерированный ненадежный контент в iframe от сервис-воркера.
Я пытаюсь полностью заблокировать iframe, чтобы он мог загружать ресурсы только из своего srcdo c, который перехватывается обслуживающим персоналом. Это означает отсутствие img et c. с любого другого домена, но разрешающего javascript.
Для этого я добавляю CSP: sandbox allow-scripts; default-sr c "собственные" данные :; script-sr c 'self' 'небезопасный встроенный'; на всех активах, обслуживаемых сервис-воркером, включая iframe root.
Загрузка документа iframe root работает нормально. Но загрузка изображения в iframe с относительным URL-адресом, таким образом, из того же источника, не влияет на сервис-воркер, а попадает в родительский домен и, таким образом, получает 404. Если я удалю свойство песочницы из CSP, тогда изображение загружается, но я теряю безопасность.
Есть способ заставить это работать? Здесь у меня есть демонстрация: https://ianopolous.github.io/sandbox
Я применяю заголовки CSP в сервисном работнике здесь: https://github.com/ianopolous/sandbox/blob/gh-pages/sw.js#L119