HTML5 iframe проблема с атрибутами песочницы - PullRequest
5 голосов
/ 13 июля 2011

Не могли бы вы помочь мне понять реализацию Chrome HTML5-атрибутов iframe в изолированной программной среде allow-same-origin и allow-top-navigation?

Первый вопрос:

Например, когда я проверяю allow-same-origin, я делаю:

 <iframe id='frm' src="file.html" sandbox="allow-same-origin"></iframe>    
...    
oIFrame = document.getElementById('frm');
var oDoc = (oIFrame.contentWindow || oIFrame.contentDocument);    
if (oDoc.document)     {
oDoc = oDoc.document;
oDoc.getElementById('foo').innerText = 'Hello man!';   
...

Содержимое файла file.html:

...
<div id="foo">Hello</div>    
...   
alert(document.cookie); 
...

и это работает только тогда, когда у меня есть дополнительный атрибут, называемый allow-scripts, поэтому у меня есть sandbox = "allow-scripts allow-same-origin". Один allow-same-origin не работает, а один allow-scripts прекрасно работает (скрипты работают, но не связаны с API SOP, это нормально по стандарту HTML5).

Стандарт HTML5 гласит:

"Во-первых, его можно использовать, чтобы разрешить изолированную программную среду для контента с того же сайта, чтобы отключить сценарии, но при этом разрешить доступ к DOM изолированного содержимого."

Я неправильно понимаю, или реализация Chrome неверна?

Второй вопрос:

Стандарт HTML5 говорит о разрешении-топ-навигации:

"Во-вторых, его можно использовать для встраивания контента со стороннего сайта, в изолированную программную среду, чтобы этот сайт не открывал всплывающие окна и т. Д., Не препятствуя обратной связи встроенной страницы со своим исходным сайтом, используя API базы данных для хранить данные и т. д. "

Мои всплывающие окна в Chrome не блокируются. Как я мог заблокировать их? Я использую только allow-top-navigation.

Ура, David

1 Ответ

1 голос
/ 26 мая 2012

По первому вопросу: кажется, это означает, что родительская страница все еще может иметь доступ к DOM изолированной <iframe>, в то время как сценарии в самом <iframe> заблокированы для выполнения;так что это всего лишь parent -> iframe, но не iframe -> parent

Второй вопрос: Может быть, я неправильно понимаю, но, как следует из названия allow-top-navigation, это позволит вместо того, чтобы блокировать созданный сайт отиспользуя такие вещи, как top.location.replace().

...