我有一个不包含会话超时的应用程序,我们不希望我们的用户每次访问该站点时都必须登录,或者即使他们一直处于空闲状态。我们最近与一家外部供应商合作,提供了一些我们在i-frame中呈现的研究数据。在iframe中会话到期后,供应商有30分钟的会话,要求用户重新登录到供应商站点。正如我之前所说,我们不希望最终用户多次登录。
我提出的解决方案是,当最终用户会话在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帧在不同的应用服务器上运行)它仍然将用户发送到供应商的登录屏幕,如果我只是按下刷新,我就成功重新登录而无需提供凭证。
几个问题:
答案 0 :(得分: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>