我有一个不包含会话超时的应用程序,我们不希望我们的用户每次访问站点时都必须登录,即使他们一直处于空闲状态。我们最近与外部供应商合作,提供了一些我们在 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-frame 运行在不同的应用程序服务器上)时,它仍在发送用户到供应商的登录屏幕,如果我只是按刷新我成功地重新登录而无需提供凭据。
几个问题:
- 有没有人可以想到的不同方式来处理这个问题?
- 知道为什么这会在本地工作而不是跨域工作吗?