【问题标题】:Cant destroy Cookies of Firefox in JAVA EE无法在 JAVA EE 中销毁 Firefox 的 Cookie
【发布时间】:2014-07-12 18:16:08
【问题描述】:

我的会话 Cookie 有问题,当我注销时销毁该 cookie,在 Chrome 和 IE 中运行良好,但我无法在 firefox 中销毁 cookie,如果我在注销后再次尝试访问该站点,它让我进去了。

我使用的是 Struts 2,我有一个拦截器读取 cookie,然后创建或重定向到主页,这取决于 cookie 是否存在。

另外,当按下firefox的后退按钮时,动作或拦截器不会被执行。

你需要一些代码,我会编辑问题

【问题讨论】:

  • 为什么要问什么时候可以立即发布代码?
  • 如何使会话 cookie 失效?
  • 我将cookie设置为cero,代码如下: Cookie c = new Cookie("my_cookie_name", null); c.setPath("/"); c.setValue(null); c.setSecure(true); c.setHttpOnly(true); c.setMaxAge(0); this.servletResponse.addCookie(c);
  • 不要将代码放在 cmets 中,使用编辑链接编辑问题并在那里发布您的代码。

标签: java javascript firefox cookies


【解决方案1】:

在 java 中:

 private deleteCookie(String cookieName)
 {
      Cookie[] cookies = reqest.getCookies();

      if (cookies != null) {
         for (Cookie cookie : cookies) {
             if (Long.valueOf(cookie.getName()).equals(cookieName)) {
                 cookie.setValue(null);
                 cookie.setMaxAge(0);
                 cookie.setPath(theSamePathAsYouUsedBeforeIfAny);
                 response.addCookie(cookie);
             }
         }
     }
 }

并将其称为

deleteCookie("my_cookie_name");

在 javascript 中:

为了删除 cookie,请将过期日期设置为过去的某个时间。执行此操作的函数将是。

var delete_cookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};

然后删除一个名为 my_cookie_name 的 cookie。

delete_cookie('my_cookie_name');

问题是您正在创建一个新的 cookie,而不是从浏览器获取现有的 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多