Можно ли найти междоменный новый URL-адрес iframe после перенаправления? - PullRequest
8 голосов
/ 02 мая 2009

Я пытаюсь опубликовать в форме входа приложения на другом поддомене моего сайта. Это стороннее приложение, к которому у меня нет доступа к источнику.

Я знаю, что вы не можете получить доступ к большинству функций междоменного iframe из-за той же политики происхождения . Однако все, что мне нужно для доступа, - это URL, который был перенаправлен (через JavaScript) в iframe. У него есть токен сеанса, через который я хочу пройти.

Это похоже на то, что может быть достаточно безопасным, чтобы его можно было разрешить, но я пока не нашел способа сделать это. Я использую jQuery, и я попробовал $('iframe').contents(), но у меня, похоже, нет никаких разрешений на этот объект. Я также проверил $('iframe').attr('src'), но он остается в качестве URL-адреса перед перенаправлением. Есть ли другой способ?

Ответы [ 2 ]

11 голосов
/ 02 мая 2009

Нет, у вас нет доступа к любым свойствам внутри фрейма. У вас есть доступ только к свойствам внешнего позиционирования и стиля.

Вот почему работать с кадрами - такая боль. Я обычно использую их, только если мне все равно, что в них делается.

Разве вы не можете выполнить аутентификацию и передачу токенов на стороне сервера? Вместо того, чтобы клиент делал аутентификацию, вы не можете сделать это на своем сервере? Возможно, вам придется проделать дополнительную работу для создания HTTP-запроса и синтаксического анализа ответа, но вы избежите проблем с iframe.

Суть в том, что на фреймы, вероятно, не стоит полагаться (особенно когда речь идет о кросс-браузерной функциональности) в таких важных вещах, как аутентификация.

2 голосов
/ 01 июня 2009

Попробуйте пример (метод 2), в котором автор устанавливает еще один iframe внутри первого, загружая страницу в исходном домене. Внутренней странице разрешено вызывать javascript для внешнего родителя, поскольку они загружаются в одном домене. Просто загрузите внутреннюю страницу с соответствующими параметрами, которые можно передать родителю.

...