Происхождение amp-iframe не должно быть равно контейнеру, если установлен параметр allow-same-origin - PullRequest
0 голосов
/ 06 июня 2018

Я получаю эту ошибку:

Origin of <amp-iframe> must not be equal to container
<amp-iframe sandbox=​"allow-scripts allow-same-origin" layout=​"nodisplay" frameborder=​"0" src=​"https:​/​/​localhost:​3000/​team-tracker-frame.html?team=reading" class=​"i-amphtml-element i-amphtml-layout-responsive i-amphtml-layout-size-defined i-amphtml-error i-amphtml-layout">​…​</amp-iframe>​ 
if allow-same-origin is set. 
See https://github.com/ampproject/amphtml/blob/master/spec/amp-iframe-origin-policy.md for details.

Мой усилитель iframe выглядит следующим образом (это шаблон мопса):

<amp-iframe 
  sandbox="allow-scripts allow-same-origin" 
  layout="nodisplay" frameborder="0" 
  src="https://localhost:3000/team-tracker-frame.html?team=reading">
</amp-iframe>

Мое понимание и интуиция подсказывают мне, чтопоставка sandbox="allow-same-origin" должна позволять успешной загрузке этого кадра.

За этим следует еще одна ошибка: Uncaught TypeError: Cannot read property 'contentWindow' of null брошено amp-iframe.js

Может кто-нибудь пролить свет на это.Конечно, «ALLOW-same-origin» означает, что я должен иметь возможность иметь iframe на том же хосте, то есть localhost: 3000

Я также заметил, что использование amp-web-push позволяет вам устанавливать iframe(helper-iframe-url = "https://localhost:3000/amp-web-push-helper-frame.html"), который будет успешно загружен в тот же источник с теми же настройками песочницы.

1 Ответ

0 голосов
/ 07 июня 2018

Проблема заключается в том, что iframes одного и того же источника могут получить доступ к родительскому документу, если объединены allow-scripts и allow-same-origin.

Совместная установка ключевых слов allow-scripts и allow-same-origin вместе, если встроенная страница имеет то же происхождение, что и страница, содержащая iframe, позволяет встроенной странице просто удалить атрибут песочницы и затем перезагрузитьсам по себе, фактически вырвавшись из песочницы.

https://html.spec.whatwg.org/multipage/iframe-embed-object.html#attr-iframe-sandbox

AMP Страницы, однако, должны быть построены таким образом, чтобы их можно было обслуживать из другого источника (например, cdn.ampproject.org).Если amp-iframe позволит установить значения allow-scripts и allow-same-origin для одинаковых исходных фреймов, поведение может нарушиться, если документ AMP подается из другого источника.Чтобы избежать этого, при использовании allow-same-origin.

необходимо обслуживать фреймы из другого (под) домена.
...