【问题标题】:why session is ended when cache is cleared为什么清除缓存后会话结束
【发布时间】:2013-01-25 09:35:29
【问题描述】:

为什么清除缓存后会话丢失或结束。虽然在服务器上提到了会话。我是 Java 开发人员,我从 HttpServletRequest 对象获得了会话。

我们在服务器端管理会话。那么它与浏览器和客户端有什么关系呢?为什么清除缓存后我们的网站会退出?

我用我的 gmail 帐户尝试过。当我关闭浏览器并再次打开 gmail 或清除缓存时,它显示我已注销。我做了谷歌但无法得到令人满意的答案。有没有人能清除一下?

【问题讨论】:

标签: java session browser-cache


【解决方案1】:

跟踪会话的标准机制是 cookie。清除浏览器的缓存以及清除 cookie 将导致在发出请求时不会将会话 ID 发送到服务器,因此它别无选择,只能开始新的会话。

【讨论】:

    【解决方案2】:

    您在服务器上的 Session 对象只是表示。会话信息默认由浏览器中的cookies维护,cookie名为JSESSIONID。您可以找到更多here,请参阅 BalusC 的答案。

    如果在浏览器上禁用 cookie,JSESSIONID 必须作为参数附加到 URL。这意味着在重定向的情况下,您必须调用HttpServletResponse#encodeRedirectURL 或使用c:url 标签作为您页面中的链接。

    【讨论】:

    • 感谢您的时间和支持。从您的帖子和链接中,我认为当我们在服务器上创建会话时,会在浏览器上隐式创建一个 cookie。我在朝着正确的方向前进吗?如果我是对的,那么如果用户在客户端禁用 cookie 会发生什么?
    • 我更改了禁用 cookie 情况的答案。
    【解决方案3】:

    您的服务器端框架正在使用客户端计算机上的 cookie 来跟踪会话。当它消失时,它会丢失会话上下文。

    【讨论】:

      【解决方案4】:

      当您说“缓存已清除”时,我假设您是在谈论您的浏览器缓存。

      如果是这样,您在清除缓存时正在做的事情之一就是删除您访问的网站设置的所有cookies。 cookie 是网站(例如 GMail)用来确定您与之前以“Abhendra Singh”身份登录的同一个人的标识符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-05
        • 2012-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-30
        • 2015-11-23
        • 2015-09-27
        相关资源
        最近更新 更多