фреймы из одного домена и кросс-браузерные скрипты - PullRequest
0 голосов
/ 04 августа 2011

Скажем, страница, обслуживаемая из foo.bar.com/parent.htm, содержит фрейм iframe, который указывает на bar.com/child.htm.

Может ли скрипт, расположенный в parent.htm, вызвать функцию, определенную в child.htm?

Похоже, это должно работать, потому что parent.htm и child.htm оба происходят из одного домена.Я получаю сообщение об отказе в доступе, но мне хотелось бы знать, почему?

Спасибо, Джон

Ответы [ 4 ]

1 голос
/ 04 августа 2011

Да, установите document.domain = 'bar.com' на обеих страницах, и вы сможете получить доступ к данным в перекрестном режиме.Это работает только в том же домене, например, вы не можете установить document.domain на not-the-current-domain.com *

Или то, что я обычно делаю:

document.domain = document.domain.replace(/.*?([^\.]+\.[^\.]+)$/, '$1');

который устанавливает document.domain в текущий корневой домен (например, удаляет любые субдомены)

1 голос
/ 04 августа 2011

Это по замыслу. Хостинг-сервисы, использующие субдомены для разных клиентов, должны безопасно изолировать их.

1 голос
/ 04 августа 2011

Нет. Посмотрите на Википедию, например: http://en.wikipedia.org/wiki/Same_origin_policy.

Чтобы проиллюстрировать, следующая таблица дает обзор типичных результатов для проверки по URL "http://www.example.com/dir/page.html".

http://v2.www.example.com/dir/other.html - Сбой - Другой хост (требуется точное соответствие)

1 голос
/ 04 августа 2011

Они не считаются одним доменом с точки зрения браузера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...