Нарушение прав доступа к песочнице при использовании редактора tinyeditor wysiwyg в расширении Chrome
Я получаю следующую ошибку при попытке загрузить сторонний редактор wysiwyg в расширение Chrome.
Нарушение доступа к песочнице: заблокирован фрейм в "chrome-extension://cmcjindomengjienigbcldekcfnhfped" из-за доступа к фрейму в "null". Оба кадра находятся в песочнице и не имеют флага "allow-same-origin".
Сначала я получил похожую ошибку и сумел ее исправить, добавив флаг allow-same-origin. Это привело к другой ошибке, которая требовала флажка разрешения сценариев. Ниже приведено текущее состояние элемента iframe.
<iframe sandbox="allow-same-origin allow-scripts" src="editor.html" width="350" height="350" style="border:none;"></iframe>
Редактор wysiwyg динамически создает iframe для хранения редактора. Я предполагаю, что это может вызвать второй случай ошибки. Я попытался установить флаг allow-same-origin на созданном iframe на странице с песочницей, но это ничего не дало.
Я мог бы попробовать альтернативу, но, поскольку это также учебное приключение, я бы хотел решить эту проблему.
РЕДАКТИРОВАТЬ: я попытался заменить динамически созданный iframe с div, просто чтобы посмотреть, что произойдет. Я не получил ошибку выше, но, как и ожидалось, код потерпел неудачу при доступе к свойствам, связанным с iframe. Это не доказательство того, что новый iframe является проблемой, но это действительно может быть.
EDIT 2 FWIW, строка ниже, где выдается ошибка
this.e = this.i.contentWindow.document;
где я был ранее инициализирован как
this.i = document.createElement('iframe');
1 ответ
Если вы поместите в песочницу свой iframe, вы не сможете получить доступ к его контенту извне. Затем вы должны использовать postMessage для связи между пользовательскими агентами.
При одновременном использовании allow-same-origin и allow-scripts в iframe, загруженном в тот же домен, iframe удаляет атрибут песочницы.
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html
Совместное задание ключевых слов allow-scripts и allow-same-origin вместе, когда встроенная страница имеет то же происхождение, что и страница, содержащая iframe, позволяет встроенной странице просто удалить атрибут песочницы и затем перезагрузить себя, эффективно вырвавшись из песочницы.,