在 iOS 全屏模式下运行移动网站时,使用“apple-mobile-web-app-capable”元标记,我使用 AJAX 和同步页面请求(包括重定向)的组合,在用户登录时成功.
但是,当用户注销并且会话被破坏时,iOS 设备会离开全屏模式并在 Mobile Safari 窗口中打开登录页面。
这是一个常见的事件序列:
- 用户单击主屏幕上的按钮以在 iOS 全屏模式下启动移动网站
- 服务器将用户重定向到登录页面进行身份验证(仍然全屏)
- 用户登录,并被重定向回移动主页(仍然全屏)
- 用户通过 GET 和 POST 执行各种操作,有些使用 AJAX,有些不使用(仍然全屏)
- 用户点击注销按钮,这会破坏会话并重定向回登录页面
- 移动 Safari 窗口第二次打开以呈现登录页面
我在注销成功时尝试了 301、302 和 303 重定向,但似乎没有任何改变这种行为。它似乎与在全屏模式下运行时用户的会话结束有关。我认为这并不重要,但安全机制是通过运行在 Tomcat 上的 Spring Security 实现的。
有什么办法可以防止这种行为?我不希望在注销时使用 location.href 客户端重定向。