繁体   English   中英

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

[英]Back button on Safari/Webkit loading a page from cache instead of a fresh copy

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

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

还值得一提的是,对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时,这一切都会发生,启用javascript会产生从Web服务器重新加载page1的预期结果,从而使用户重定向到初始登录页面

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

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

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

干杯;

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

向后导航/卸载事件未触发时,iOS 5 Safari中的页面缓存出现问题

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM