2011-09-27 80 views
1

我有一个应用程序不包含会话超时,我们不希望我们的用户每次来到该网站时都必须登录,或者即使它们保持空闲状态。我们最近与外部供应商合作提供了一些我们在i帧中呈现的研究数据。供应商在iframe过期后会有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都在同一个应用程序服务器上运行,但是当它部署在两个不同的域(父窗口和i-frame在不同的应用程序服务器上运行)时,它仍然将用户发送到供应商的登录屏幕,如果我只是按刷新我已成功重新登录,无需提供凭据。

几个问题:

  1. 是否有不同的方式任何人能想到的来处理这个问题呢?
  2. 任何想法为什么这将在本地工作,但不跨域?

回答

0

我认为你需要从IFRAME内容更改父窗口的URL

父窗口的内容:

<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>