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。会话外和未经身份验证的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,而不是再次访问服务器以检索新的副本。请不要,这一切都发生,而javascript在Safari中被禁用,使其启用产生从web服务器重新加载page1的预期结果,从而使用户获得重定向到初始登录页面
我尝试在页面主体标签上设置卸载事件处理程序,以防止Webkit将页面加载到其页面缓存中,但这似乎没有解决问题。
其他主流浏览器,FF, IE和Chrome似乎在JS和非JS情况下都能产生预期的结果。
我在这里错过了什么,或者这听起来更像是Safari/WebKit的一个bug ?
欢呼;
这是因为Webkit/Safari的页面缓存特性。你可以在下面的链接
找到更多关于这个的信息在iOS 5 Safari中导航返回/卸载事件未触发时页面缓存的问题
作为快速修复,您可以尝试向窗口卸载事件添加一个空函数。当出现这种情况时,Webkit/Safari将不会将页面添加到pageCache中——让页面像其他浏览器一样正常加载。
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 处理一个JSON文件;完全相同的副本不是
- 我如何制作一个文件的副本并用gump将其移动到父文件夹
- Iframe追加创建一个副本
- 我有一个表单和一个按钮来添加它的副本.我希望重复的无线电输入具有变量名
- 如何找到两个相同的行,并删除他们两个?(不只是一个副本!)
- 我得到一个空白的副本上拖拽一个事件到日历与FullCalendar JQuery插件
- 在JavaScript中创建一个反向数组的独立副本
- 拖动图像的副本不会使另一个图像放到上面
- 循环的Javascript放置一个指针,而不是用于链接分配的变量的副本
- 一个JS函数如果是一个正在工作的JS函数的近似副本,那么它将无法工作
- Safari/Webkit的后退按钮从缓存加载页面,而不是一个新的副本