2013-03-11 4 views
6

У меня есть iframe, который вводит страницы, называемый «помощником». Поэтому из-за той же политики происхождения я должен установить, что iframe-домен тот же, что и родительский домен окна. Но я не могу получить доступ к родительскому оконному домену. Как это можно решить?Динамически установлен document.domain в iframe

Update # 1

Этот код в настоящее время работает для доменов 2-го уровня:

pathArray = window.location.host.split('.'); var arrLength = pathArray.length; var domainName = pathArray.slice(arrLength - 2, arrLength).join('.'); document.domain = domainName;

, но мне нужно каким-то образом получить его из родительского окна, а не полагаться на домен второго уровня

+0

Ваш iframe происходит с другого сервера? то не имеет значения, к чему вы установили document.domain. Он должен исходить из этого домена – mplungjan

+1

Если последние части домена не совпадают, забудьте об этом. Он используется для соответствия sales.domain.com для shopping.domain.com, а не site.sales.com с site.shopping.com – mplungjan

+0

да, это будет то же самое, я просто хочу знать, что горячий, чтобы получить его из родительского окна. – Suhan

ответ

7

Я не знаю, если это поможет, но я использую это в IFRAME

try { 
      var domainName = window.parent.parent.iframeData.domainName; 
     } 
     //Access violation 
     catch (err) { 
      document.domain = window.location.hostname.replace('www.', ''); 
     } 

Так я проверить, если домен уже установлено у нас есть исключение анг попытаться угадать домен, в любом случае, нет необходимости указывать домен

EDIT: Более правильно использовать почтовое сообщение, чтобы установить домен, если необходимо

2

Короче говоря, он не может. Установка document.domain работает только тогда, когда iFrame и содержащие окно фактически являются частью одного и того же домена. Если браузер разрешил вам устанавливать document.domain на что-то другое, кроме домена, на котором вы были на самом деле, это будет нарушение безопасности. Подумайте, любой злонамеренный скрипт мог бы просто сказать: «Нет, поверьте мне, на этом», и браузер, по сути, сказал бы: «О, хорошо, поскольку вы так хорошо спросили, вот вам все, что вам нужно».

document.domain может быть установлен только в родительском домене фактического домена страницы. Если iFrame и содержащее окно не разделяют, по крайней мере, то, то ни один браузер не позволит им переходить разговор.

Если я не понял ваш вопрос. Не стесняйтесь публиковать некоторые примеры для разъяснения.

1

Предполагая, что ваш родитель может быть a.domain.com , а ваш iframe равен b.domain.com - тогда вы можете делать то, что вы пытаетесь сделать. Если вы должны знать, что родитель, передать его в атрибут IFrame Src или попробовать document.referrer

+0

Например, у меня есть родительский домен 6.weather.ch, и если я использую свой код, у меня есть iframe domain weather.ch, а разрешение denied – Suhan

+0

. Затем родительский код должен установить HIS document.domain для «weather.ch» или «. weather.ch "(я не помню, если это с ведущей точкой или нет) – mplungjan

0

добавьте document.domain = 'your.domain' на обеих страницах.

такой. не забудьте оба parent.top

document.domain = 'corp.local'; только родительский тип

document.domain = 'corp'; не будет работать.

Как я уже говорил здесь. javascript get iframe url's current page on subdomain

Этот документ помог. http://javascript.info/tutorial/same-origin-security-policy

Смежные вопросы