Политика безопасности содержимого внутри iframe влияет на всю страницу в Firefox

У меня есть ситуация, когда объявление имеет определение CSP внутри iframe. В chrome проблем нет, но в firefox после загрузки объявления CSP влияет на всю страницу, и я не могу загрузить какие-либо другие ресурсы.

Вы можете увидеть проблему на этом примере:

<html>
<head>
    <script>

        function getScript(url) {
            let tag = document.createElement('script');
            tag.src = url;
            tag.onload = () => document.getElementById('console').innerHTML += url + " loaded<br>";
            document.body.appendChild(tag);
        }
        function getFromCdnFirst() {
            getScript('https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.js');
        }

        function getFromCdnSecond() {
            getScript('https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.slim.min.js');
        }

        function getIframeWithCSP() {
            var doc = document.getElementById('iframe').contentWindow.document;
            doc.open();
            doc.write('<html><head><meta http-equiv = "Content-Security-Policy" content = "script-src https://cdn.ampproject.org/;object-src '+"'none';child-src blob:;frame-src 'none'" + '"></head><body>Test</body>');
            doc.close();
        }

    </script>
</head>

<body>
    <iframe id = "iframe"></iframe><br>
    <button onClick = "getFromCdnFirst()">Get script</button><br>
    <button onClick = "getIframeWithCSP()">Get CSP</button><br>
    <button onClick = "getFromCdnSecond()">Get script</button><br>
<div id = "console">
</div>
</body>

Он также доступен здесь: https://jsfiddle.net/54Luhjan/1/

После нажатия первой кнопки загружается js, вторая ссылка вставляет CSP в iframe и после этого скрипты не загружаются - CSP мешает.

Есть ли у вас какие-либо идеи, что я могу сделать, чтобы предотвратить повреждение моей страницы внешним CSP?

Это ошибка Firefox?

Хорошо, я могу воспроизвести это в Firefox 68, но с Firefox Nightly 69.0a1 (2019-06-13), пробуя https://jsfiddle.net/54Luhjan/1/ и выполняя шаги, описанные в вопросе, я не могу воспроизвести проблему, описанную в вопросе. Похоже, это ошибка, которая существует в Firefox 68 (и, возможно, в более ранних версиях), но с тех пор она исправлена. Может быть, вы сами попробуете протестировать это в Firefox Nightly и подтвердите, если вы больше не видите ту же проблему?

sideshowbarker 13.06.2019 14:54

В Firefox Nightly работает нормально. Не могли бы вы сказать мне, как проверить, когда он будет выпущен как казуальный релиз?

Wojciech Reszelewski 14.06.2019 08:00

См. wiki.mozilla.org/Release_Management/Календарь. Выпуск Firefox 69 запланирован на 03 сентября 2019 г. (3 сентября 2019 г.).

sideshowbarker 14.06.2019 08:09

В следующий раз, когда вы думаете, что нашли ошибку в Firefox, не стесняйтесь сообщать об ошибке. Я знаю, что Bugzilla может быть немного пугающей, но вы поймете, что проще связаться с разработчиками Firefox по адресу bugzilla.mozilla.org.

freddyb 14.06.2019 09:49
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
4
677
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я запускал мозрегрессия поверх бета-версии и ночных сборок Firefox. Похоже, что jsfiddle успешно загружает вещи по третьему нажатию кнопки, начиная со сборок, содержащих патчи от Mozilla ошибка 965637, которые приземлился в багажнике 21 мая 2019 г. (21 мая 2019 г.).

Так что это ошибка в Firefox 67 (и, возможно, в более ранних версиях тоже), но с тех пор она была исправлена, и исправление будет включено в Выпуск Firefox 69 запланирован на 03 сентября 2019 г. (3 сентября 2019 г.).

Однако, к сожалению, исправление не было сделано вовремя, чтобы попасть в ветку для Firefox 68, поэтому ошибка все еще будет присутствовать в файле Выпуск Firefox 68 запланирован на 09 июля 2019 г. (9 июля 2019 г.).

Другие вопросы по теме