Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Safari/Webkit上的“后退”按钮从缓存加载页面而不是新副本_Java_Javascript_Web Applications_Safari_Webkit - Fatal编程技术网

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

Java Safari/Webkit上的“后退”按钮从缓存加载页面而不是新副本,java,javascript,web-applications,safari,webkit,Java,Javascript,Web Applications,Safari,Webkit,我对Mac OSX系统上Safari/Webkit的一种“奇怪”行为有疑问,这种行为与浏览器上禁用javascript时后退按钮的功能有关 我的场景是一个web应用程序,它由一个登录页面组成,成功登录后,该页面将引导用户进入page1。如果用户从第1页注销,则他/她将被重定向到第2页。对page1的会话外和未经身份验证的请求通过302 HTTP响应重定向到初始登录页面 还值得一提的是,对page1请求的响应中存在以下HTTP头,以防止浏览器缓存页面: Cache-Control: no-cach

我对Mac OSX系统上Safari/Webkit的一种“奇怪”行为有疑问,这种行为与浏览器上禁用javascript时后退按钮的功能有关

我的场景是一个web应用程序,它由一个登录页面组成,成功登录后,该页面将引导用户进入page1。如果用户从第1页注销,则他/她将被重定向到第2页。对page1的会话外和未经身份验证的请求通过302 HTTP响应重定向到初始登录页面

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

Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Thu, 1 JAN 1970
Pragma: no-cache
成功从第1页注销后,用户将被重定向到第2页。如果此时用户决定单击“上一步”按钮,则浏览器将从缓存中加载page1,而不是再次点击服务器以检索新副本请注意,在Safari中禁用javascript时,这一切都不会发生,启用javascript会产生从web服务器重新加载page1的预期结果,从而使用户重定向到初始登录页面

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

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

我是否在这里遗漏了什么,或者这听起来更像是Safari/WebKit的一个bug


干杯

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

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