注销后,“apple-mobile-web-app-capable”站点切换到Mobile Safari

时间:2012-08-28 14:26:06

标签: ios session mobile-safari iphone-standalone-web-app

在iOS全屏模式下运行移动网站时,使用“apple-mobile-web-app-capable”元标记,我使用AJAX和同步页面请求的组合,包括重定向,同时用户成功已登录。

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

以下是一系列常见事件:

  1. 用户点击主屏幕上的按钮以在iOS中启动移动网站 屏幕模式
  2. 服务器将用户重定向到登录页面进行身份验证(仍在全屏显示)
  3. 用户登录,并重定向回移动房屋(仍在全屏显示)
  4. 用户通过GET和POST执行各种操作,有些使用AJAX,有些则没有(仍在全屏显示)
  5. 用户点击退出按钮,该按钮会销毁会话并重定向回登录页面
  6. 第二次打开Mobile Safari窗口以呈现登录页面
  7. 我在注销成功时尝试了301,302和303重定向,似乎没有任何改变此行为。它似乎与用户在全屏模式下运行时的会话结束有关。我认为这不重要,但安全机制是通过在Tomcat上运行的Spring Security实现的。

    有没有办法阻止这种行为?我不想在注销时使用location.href客户端重定向。

1 个答案:

答案 0 :(得分:6)

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

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

我之前遇到的印象是,任何非ajax / javascript导航都会导致应用程序跳转到safari来提供页面