Обработка IFrame и родительского кадра - PullRequest
1 голос
/ 27 сентября 2011

У меня есть приложение, которое не содержит времени ожидания сеанса, мы не хотим, чтобы наши пользователи входили в систему каждый раз, когда заходят на сайт, или даже если они простаивают. Недавно мы заключили партнерское соглашение с внешним поставщиком, чтобы предоставить некоторые исследовательские данные, которые мы отображаем в i-frame. У поставщика есть 30-минутный сеанс после истечения этого сеанса в iframe, и пользователям предлагается повторно войти на сайт поставщика. Как я уже говорил ранее, мы не хотим, чтобы конечный пользователь регистрировался несколько раз.

Решение, которое я нашел, состояло в том, что по истечении сеанса конечных пользователей в iframe должен был быть вызов javascript для:

/if called from an iframe, refresh the containing window

if (self != top) {

  window.parent.location.href = window.parent.location.href;

} 

Я проверил это локально, и оно работает, то есть родительский и iframe работали на одном сервере приложений, однако, когда он развернут на 2 разных доменах (родительское окно и i-frame работают на разных серверах приложений), он все еще отправляет пользователей на экран входа в систему поставщика, и, если я просто нажму кнопку обновить, я снова войду в систему без предоставления учетных данных.

Пара вопросов:

  1. Есть ли другой способ справиться с этой проблемой?
  2. Есть идеи, почему это будет работать локально, а не в разных доменах?

1 Ответ

0 голосов
/ 28 сентября 2011

Я думаю, вам нужно изменить URL родительского окна из содержимого IFRAME

Содержимое родительского окна:

<b>iframe starts here</b><br><br>
<iframe src='iframe1.html'></iframe>

<br><br>
<b>iframe ends here</b>

<script type="text/javascript">
    function change_parent_url(url)
    {
    document.location=url;
    }       
</script>

Содержимое Iframe:

IFRAME content<br><br>

 <a href="javascript:parent.change_parent_url('http://yahoo.com');"> 
Click here to change parent URL </a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...