Safari / Webkit上的后退按钮从缓存加载页面而不是新副本

时间:2012-12-21 23:05:49

标签: java javascript web-applications safari webkit

关于"奇怪的"我遇到了问题。在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时,让它启用会产生从网络服务器重新加载page1的预期结果,从而将用户重定向到初始登录页面

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

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

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

干杯;

1 个答案:

答案 0 :(得分:0)

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

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

作为快速修复,您可以尝试向窗口卸载事件添加空函数。如果存在,Webkit / Safari将不会将页面添加到pageCache - 使页面正常加载,就像其他浏览器一样。