Ошибка «Отказано в создании» с 2 глубокими iFrame только в Chrome

#html #google-chrome #iframe #content-security-policy

#HTML #google-chrome #iframe #content-security-policy

Вопрос:

У меня есть веб-сайт, на котором размещен iFrame, внутри которого размещен другой iFrame, поэтому iFrames имеют глубину 2. Когда я запускаю Chrome, я получаю приведенную ниже ошибку, и iFrame самого низкого уровня не отображается, хотя средний слой отображается. Когда я обращаюсь к нему с помощью Firefox, все работает, и консоль не регистрирует никаких ошибок.

Ошибка консоли Chrome:

 Refused to frame 'site1' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' site1 site2 site3".
 

Как вы можете видеть из сообщения об ошибке, у меня все уровни в цепочке указаны в заголовке как предки фрейма, поэтому я не могу найти больше сайтов для перечисления там. Кроме того, если я попытаюсь открыть средний веб-сайт в Chrome без самого верхнего родительского элемента, все работает, отображая iFrame самого низкого уровня. Может ли кто-нибудь предложить какие-либо подсказки относительно того, что я могу упустить?

Ответ №1:

Оказывается, это все моя вина. Я не понимал различий между фреймами-предками и фреймом-src. Я даже не осознавал, что существуют два разных набора значений. Как только я это исправил, используя frame-ancestors для перечисления родительских доменов и используя frame-src для перечисления дочерних доменов, все работало так, как должно.

Ответ №2:

Когда я обращаюсь к нему с помощью Firefox, все работает, и консоль не регистрирует никаких ошибок.

В Firefox есть ошибка с ошибками ведения frame-ancestor журнала в консоли.

Ошибка консоли Chrome: отказано в создании «site1», поскольку предок нарушает следующую директиву политики безопасности содержимого: "frame-ancestors 'self' site1 site2 site3" .

Это странно, потому что Chrome определенно разрешает вложенный фрейм iframe, когда в frame-ancestors директиве указаны все хост-источники вышестоящих фреймов DOM.

Может быть, среди ваших «site1 site2 site3» представлен data: источник?
Или некоторые вложенные iframes публикуют X-Frame-Options заголовок?

Да, frame-ancestors директива сложная и прослушивается, но я думаю, что в вашей проблеме есть некоторые скрытые детали.