【问题标题】:delete cookie when browser closed浏览器关闭时删除 cookie
【发布时间】:2012-12-02 01:52:43
【问题描述】:

当浏览器关闭并且已经放在 window.onbeforeunload 上时,我需要删除 cookie,如下所示:

 window.onbeforeunload = function(){
        location.replace("admin.jsp?action=logout");
        deleteCookie('Times');
 }

setCookie 如下:

 function setCookie(name,value,days) {
         var expires;
         if (days) {
                  var date = new Date();
                  date.setTime(date.getTime()+(days*24*60*60*1000));
                  expires = "; expires="+date.toGMTString();
         }
         else {
                  expires = "";
              }
                  document.cookie = name+"="+value+expires+"; path=/";
     }

deleteCookie包含如下:

    setCookie(name,value,-1);

问题是每当我重新启动浏览器时,它总是会出现 window.onbeforeunload 以便触发 deleteCookie。每当用户登录时,我实际上都需要它来重置我的倒计时计时器,因为如果计数器没有结束并且用户有时会在它结束之前关闭窗口/选项卡,cookie 就永远不会被删除。所以,我的想法是要么在用户登录时重置计数器,要么在用户注销时简单地删除 cookie。但是,我仍然无法弄清楚如何编码。谁能帮我吗?不过,代码 sn-p 将不胜感激。 CMIIW

【问题讨论】:

  • 我对这个问题不是 100% 清楚,但也许您想要一个会话,请阅读 stackoverflow.com/questions/5608764/…
  • @PeterJ:我目前正在使用 JSP 或 JSTL,我如何通过会话来实现这一点,因为我需要这不是为了检测第一页,而是在登录后检测重定向到另一个页面。我已经尝试使用 session.isNew() 但它只适用于 index.jsp。 CMIIW
  • 我不知道你是如何初始化cookie的,但是如果你不提供它的过期时间,它会在你关闭浏览器时过期。不确定这是否有帮助...
  • @Ian:我使用 setCookie('Times,value, 1) 初始化 cookie,其中 1 表示 1 天。我这样做是因为在我的代码中,当计数器结束时,将触发 deleteCookie。 CMIIW

标签: javascript


【解决方案1】:

未在 cookie 上指定 Expires 值将导致 cookie 在浏览器会话结束时被删除,即当用户关闭浏览器时。喜欢:

Set-Cookie: made_write_conn=1295214458; Path=/; Domain=.foo.com

made_write_conn cookie made_write_conn 没有到期日期,使其成为会话 cookie。用户关闭浏览器后将被删除。 尝试做:

setCookie('Times',value, '');

【讨论】:

  • 请在上面编辑的问题上查看我的 setCookie 代码。知道如何解决吗?
  • 唯一的“问题”是,如果这是一个会话 cookie,会话仍然是活动的。 cookie 过期后无法向服务器报告,以便服务器清理任何内容。如果不是会话,那么这是最干净的方式
  • @Ian:那么,解决方案是什么?
  • @DoniAndriCahyono 您是否完全关闭了浏览器?如果您只是关闭标签但保持其他标签打开,它将无法正常工作。
  • @Ian:我只关闭了标签。
【解决方案2】:

当浏览器关闭时,您无法更改页面的位置。

在服务器上,您应该使用session end events 来清理帐户。

【讨论】:

  • @espascerallo:我不太确定,但它确实会进入注销页面,该页面通过从数据库中删除用户来指示。 CMIIW
  • 你是在本地主机上还是在野外网络上做?
猜你喜欢
  • 2018-02-25
  • 1970-01-01
  • 2015-06-13
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 2010-12-19
  • 2015-07-03
相关资源
最近更新 更多