IFrame和父帧会话处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IFrame和父帧会话处理相关的知识,希望对你有一定的参考价值。

我有一个不包含会话超时的应用程序,我们不希望我们的用户每次访问该站点时都必须登录,或者即使他们一直处于空闲状态。我们最近与一家外部供应商合作,提供了一些我们在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帧在不同的应用服务器上运行)它仍在发送用户到供应商的登录屏幕,如果我只是按下刷新我已成功重新登录而无需提供凭据。

几个问题:

  1. 有没有人能想到处理这个问题的方式?
  2. 知道为什么这会在本地工作但不跨域工作吗?
答案

我认为您需要从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>

以上是关于IFrame和父帧会话处理的主要内容,如果未能解决你的问题,请参考以下文章

将iframe的内容高度赋值给iframe本身高度,并隐藏iframe里面的垂直滚动条,使iframe和父页面看成是一个整体页面

本机应用程序与作为iframe嵌入的外部应用程序之间的会话处理

在 iframe 和父级之间传递 jquery 变量

js获取iframe和父级之间元素,方法属,获取iframe的高度自适应iframe高度

结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url

jQuery 的选择器在 iframe 中不起作用