【问题标题】:Back button on Safari/Webkit loading a page from cache instead of a fresh copySafari/Webkit 上的后退按钮从缓存加载页面而不是新副本
【发布时间】:2012-12-09 12:23:55
【问题描述】:

我遇到了关于 Mac OSX 系统上 Safari/Webkit 的“奇怪”行为的问题,这与浏览器上的后退按钮的功能有关禁用了 javascript

我的场景是一个 Web 应用程序,它包含一个登录页面,成功登录后,它将引导用户进入 page1。如果用户退出 page1,那么他/她将被重定向到 page2。对 page1 的会话外和未经身份验证的请求将通过 302 HTTP 响应重定向到初始登录页面。

还值得一提的是,对 page1 的请求的响应中包含以下 HTTP 标头,以防止浏览器缓存该页面:

Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Thu, 1 JAN 1970
Pragma: no-cache

从 page1 成功注销后,用户将被重定向到 page2。如果此时用户决定单击后退按钮,则浏览器将从其缓存中加载 page1,而不是再次访问服务器以检索新副本。 请不要在 Safari 中禁用 javascript 时发生这一切,启用它会产生从 Web 服务器重新加载 page1 的预期结果,从而使用户被重定向到初始登录页面

我尝试在页面主体标签上设置一个卸载事件处理程序,以防止 Webkit 将页面加载到其页面缓存中,但这似乎并没有解决问题。

其他主流浏览器,FF、IE、Chrome 似乎在 JS 和非 JS 情况下都能产生预期的结果。

我是否在这里遗漏了什么,或者这听起来更像是 Safari/WebKit 的错误?

干杯;

【问题讨论】:

    标签: java javascript web-applications safari webkit


    【解决方案1】:

    这是因为 Webkit/Safari 中的页面缓存功能。您可以在以下链接中找到有关此的更多信息

    Problems with Page Cache in iOS 5 Safari when navigating back / unload event not fired

    作为快速修复,您可以尝试向窗口卸载事件添加一个空函数。如果出现这种情况,Webkit/Safari 不会将页面添加到 pageCache 中——让页面像其他浏览器一样正常加载。

    【讨论】:

      猜你喜欢
      • 2014-08-26
      • 2012-05-14
      • 1970-01-01
      • 2016-02-24
      • 2012-02-06
      • 1970-01-01
      • 2013-10-13
      • 1970-01-01
      • 2016-10-16
      相关资源
      最近更新 更多