#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
директива сложная и прослушивается, но я думаю, что в вашей проблеме есть некоторые скрытые детали.