java - 如何避免用户注销后的缓存?

标签 java browser-cache cache-control

我使用此代码使最终用户在注销后无法使用浏览器后退按钮访问应用程序页面。如果最终用户单击浏览器后退按钮,则需要将用户再次返回到 ApplcationLogin 页面。这里工作正常,但单击“后退”按钮后,它会显示一页(不是应用程序登录页面)。此页面连续文档过期消息,并带有“再试一次”按钮,如果用户单击“再试一次”按钮,应用程序将重新登录。这是代码。

  res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
                res.setHeader("Pragma", "no-cache"); // HTTP 1.0.
                res.setDateHeader("Expires", 0); // Proxies
                chain.doFilter(request, response);

最佳答案

您很可能使用 HTTP 基本身份验证。对于基本身份验证,没有真正的方法可以清除浏览器中的凭据。当访问某些 protected 内容时,浏览器只是再次发送凭据。此过程与您的缓存 header 完全无关。

如果这是原因,您可以切换到基于表单的身份验证。我们所做的另一个技巧是发送重定向到 dummy:dummy@xy.com/loggedout.jsp 以从浏览器中清除用户密码凭据,但是,这并不完美,而且会让用户感到困惑。

关于java - 如何避免用户注销后的缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22089510/

相关文章:

java - 正则表达式查找第一个下划线之前和之后的所有字符,然后确保它们相同

caching - 如何绕过客户端上的 Varnish 缓存?

php - 为什么 PHP 区分缓存的 .php 和 .abc 扩展名?

ubuntu - .htaccess 位于 ubuntu apache2 的什么位置?

asp.net-mvc - 利用 Azure 上的 MVC 站点的浏览器缓存

javascript - 强制 Chrome 始终获取 javascript 文件

java - jsp jdbc数据访问层设计

java - 将文件从 applet 上传到 servlet 时出现问题

java - 如何处理通用接口(interface)实现并避免@SuppressWarnings?

JQuery.ajax(),缓存选项IE8