【问题标题】:how to delete the cookies in jsp/java如何删除jsp/java中的cookies
【发布时间】:2012-02-13 01:16:09
【问题描述】:

这是我设置新 cookie 的代码

Cookie citizen = new Cookie("citizen",email);
citizen.setMaxAge(3600);
response.addCookie(citizen);

现在我正在使用此代码来销毁 cookie

Cookie[] cookies = request.getCookies();

        for(int i = 0; i < cookies.length; i++) {
            if (cookies[i].getName().equals("citizen")) {
             cookies[i].setMaxAge(0);
            response.addCookie(cookies[i]);
}
}

但是,我仍然获得了 cookie 的价值。帮助将不胜感激!

【问题讨论】:

  • 你的意思是在下一个请求中客户端仍然发送cookie吗?
  • 不,我刚刚找到并使用了上面的代码。但是,它不起作用。
  • 它是如何“不工作”的?你的意思是在下一个请求中客户端仍然发送cookie?如果没有,会发生什么?您预计会发生什么?
  • 它对我有用。创建了一个页面,如果它获得参数“add”设置cookie,如果它获得参数“delete”它删除cookie(如您上面的代码)。删除后的请求不包含 cookie(使用 Safari)。您可以记录您发送和接收的内容吗?
  • 你检查过字符串是否匹配正确吗?也许你的 if 语句没有触发?

标签: java jsp cookies


【解决方案1】:

以下链接可能对您有所帮助..

How can delete information from cookies?

祝你好运!!!

如有任何疑问,请告诉我...

【讨论】:

    【解决方案2】:

    我遇到了与此类似的问题,即使在将 max age 设置为 0 并将值设置为 "" 之后,cookie 仍保留该值。

    我使用Firefox查看cookie属性以帮助调试。登录时,servlet调用我的cookie类来设置cookie,cookie路径为“/javawork/”。注销时,JSP 页面调用相同的 cookie 类通过将最大年龄设置为 0 来“删除”cookie。但是 JSP 页面位于 Web 应用程序的子文件夹中,所以当我创建相同的 cookie 时最大年龄为 0 的名称,它创建了一个路径为“/javawork/test_login/”的新 cookie。

    所以“新”cookie 立即过期,但原来的 cookie 仍然存在。在我的删除 cookie 函数中,我需要将“新”cookie 的路径设置为“/javawork/”,当我将最大年龄设置为 0 并添加它时,它会更新原始 cookie 并让我正确注销。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      正确的选项是

      Cookie cookie = new Cookie("citizen", "citizen");
      cookie.setMaxAge(0);
      cookie.setValue("");
      response.addCookie(cookie);
      

      如果您尝试从请求中获取 cookie 并使用 setMaxAge(0) 将其添加到响应中,您会看到 cookie 没有被删除。

      【讨论】:

        【解决方案4】:

        尝试添加这一行:

         cookies[i].setMaxAge(0);
         //add this line
         cookies[i].setPath("/");
         response.addCookie(cookies[i]);
        

        【讨论】:

          【解决方案5】:

          这对我有用 -

          Cookie UIDCookie = new Cookie(COOKIE_KEY, "");
          UIDCookie.setMaxAge(0);
          UIDCookie.setPath("/");
          response.addCookie(qptUIDCookie);
          

          【讨论】:

          • 我认为你的意思是 UIDCookie 而不是 qptUIDCookie ))
          【解决方案6】:

          我们可以通过将 max age 设置为零来删除 cookie。 例如:

          Cookie[] cookies = request.getCookies();
          cookies[0].setMaxAge(0);
          response.addCookie(cookies[0]);
          

          这里我们只删除第一个cookie

          【讨论】:

          猜你喜欢
          • 2011-01-01
          • 2017-08-31
          • 2021-09-24
          • 2018-12-13
          • 2013-01-18
          • 1970-01-01
          • 2023-04-02
          • 1970-01-01
          相关资源
          最近更新 更多