"apple-mobile-web-app-capable"网站在注销后切换到移动 Safari 浏览器



在iOS全屏模式下运行移动网站时,使用"支持苹果移动网络应用程序"的元标签,我使用AJAX和同步页面请求的组合,包括重定向,在用户登录时成功。

但是,当用户注销并且会话被破坏时,iOS设备会离开全屏模式,并在Mobile Safari窗口中打开登录页面。

以下是一个常见的事件序列:

  1. 用户点击主屏幕上的按钮,在iOS中启动移动网站屏幕模式
  2. 服务器将用户重定向到登录页面进行身份验证(仍处于全屏状态)
  3. 用户登录并重定向回移动主页(仍处于全屏状态)
  4. 用户通过GET和POST执行各种操作,有些使用AJAX,有些不使用(仍然是全屏)
  5. 用户点击注销按钮,这会破坏会话并重定向回登录页面
  6. Mobile Safari窗口打开,第二次呈现登录页面

我已经尝试过301、302和303在注销成功时重定向,但似乎没有什么能改变这种行为。这似乎与用户在全屏模式下运行时的会话结束有关。我认为这并不重要,但安全机制是通过在Tomcat上运行的Spring security实现的。

有什么方法可以防止这种行为吗?我不希望在注销时使用location.href客户端重定向。

您可以通过使用jQuery的事件委托为页面上的所有链接分配一个顶级事件处理程序来取消链接默认行为。当检测到点击事件时,我们取消默认行为(在移动Safari中打开),然后手动更改窗口的位置。这种方法允许在不破坏iPhone独立应用程序体验的情况下更改页面。

http://www.bennadel.com/blog/2302-Preventing-Links-In-Standalone-iPhone-Applications-From-Opening-In-Mobile-Safari.htm

之前遇到这种情况时,我的印象是,任何非ajax/javascript导航都会导致应用程序跳转到safari来为页面

提供服务