【问题标题】:unable to remove firefox session cookies无法删除 Firefox 会话 cookie
【发布时间】:2013-04-24 12:58:00
【问题描述】:

由于我的用户已将他们的会话配置为在每次重新打开他们的 Firefox 浏览器时重新打开。 '会话' cookie 回来了。 但如果会话 cookie 不存在或 24 小时前,我的网站需要新的身份验证。所以我遇到了这个问题,每次我在 24 小时后重新打开浏览器时都需要手动删除过期的 cookie。

为了解决这个问题,我厌倦了在我的页面上放置一个“注销”链接,这应该对我有所帮助。但不幸的是它没有帮助......

我尝试使用以下代码删除 cookie,但它似乎没有从 Firefox 存储其 cookie 的 sqilte 表中删除 cookie。运行以下代码后,cookie 重新出现..(或者它们没有被删除???)我怎样才能做到这一点?

代码:

function Delete_Cookie( name, path, domain )
{
    document.cookie=name+"="+((path) ? ";path="+path:"")+((domain)?";domain="+domain:"")+";expires=Thu, 01 Jan 1970 00:00:01 GMT";
}

$("#Logout").click(function() {
    Delete_Cookie('SecOne','/','.mydomain.com');
    Delete_Cookie('SecTwo','/','.mydomain.com');
    alert("Bye");
});

【问题讨论】:

  • 为什么不在 cookie 上设置一个 24 小时的过期日期?如果 cookie 存在(= 未过期),请不要重写它...
  • 会话 cookie 不是设置为在浏览器关闭时过期吗?如何在此 cookie 上设置过期日期,该 cookie 由其他站点设置,我必须进行身份验证。我们所有的网站都进入这个“主”网站进行身份验证,该网站在成功验证后会在我们的 PC 上设置一个“会话 cookie”。现在 a) 我如何设置这个 cookie 的到期计时器? b) 由于 Firefox 自身的行为,会话 cookie 在设置为从上次会话中打开选项卡时重新出现。

标签: firefox cookies session-cookies


【解决方案1】:

虽然我不能确定问题是什么,但有几种可能:

域名可能有误。

您可以编写一个不使用路径和域名的测试删除行,然后看看它是否有效。如果 cookie 在更改后被删除,那么是您为删除行创建的字符串,或者传入的参数错误。

另外,您的代码的另一部分可能导致 cookie 重新出现。检查是否有任何其他 cookie 设置在此之后被调用。

或者可能需要重新加载页面才能使 cookie 消失

【讨论】:

  • firefox 设置为在开始时重新打开上一个会话的选项卡。这会导致会话 cookie 从 firefox squlite 数据库中重新出现。但我的问题是,我怎样才能删除这些 cookie?
  • 我刚刚接受,因为我没有收到任何回复。 Firefox 本身正在从其数据库中重新添加 cookie。我很想知道是否有任何方法可以阻止这种情况。或从 firefox sqlite 数据库中删除 cookie - 通过 javascript。
  • 好的,我想出了一个解决办法。您还可以设置另一个 cookie,其中包含其他 cookie 的到期日期。当您的用户使用该网站时,您可以检查以确保当前不是那个日期,如果是,则手动删除所有 cookie。如果您无法通过设置到期日期来删除它们,我认为您可以通过将它们设置为 0 来“删除”它们。
【解决方案2】:

如果 cookie 是 HttpOnly cookie,则无法从 HTTPS 安全网页中读取/删除。如果cookie是正常的,可以使用以下功能删除cookie。

function deleteCookie(keyName){
        var allcookies = document.cookie, i, cookiearray = null, name = null;
        cookiearray = allcookies.split(';');
        for (i = 0; i < cookiearray.length; i++) {
            name = cookiearray[i].split('=')[0].trim();
            if (name === keyName) {
                document.cookie = name + '=000;expires=Thu, 1 Jan 1970 00:00:00 UTC; path=/';
            }
        }
    }

注意:即使浏览器关闭,会话 cookie 也无法删除。这是 chrome 浏览器中的已知错误。请参考以下链接 Cookie issue in chrome

【讨论】:

  • 浏览器保持打开状态超过 24 小时。 cookie 在 24 小时内过时/过期,但不会被浏览器删除。因此我必须手动删除 cookie。身份验证是通过来自另一个身份验证网站的 https 进行的,因此它们是安全的 cookie。我无法更改其他域(主域或其他网站)设置的 cookie。如果我关闭并重新打开浏览器,它们就会消失。他们能不能在 24 小时结束时“消失”?????
  • 我在 chrome 浏览器中验证。它运行良好。 cookie 在 cookie 的 max-age 之后过期。你是哪个浏览器遇到这个问题???
【解决方案3】:

我知道这是一个旧线程,但我遇到了同样的问题,因为我一直试图设置一个带有过去一段时间的 cookie,认为它会过期并且不会显示在 FF cookie 管理器中。

将 cookie 设置为将来过期但有一个空白值可以消除它。不知道为什么。

setcookie(mycookie,"", time()+5000,'/');

使用 FireFox v40.0.3
似乎 Firefox 记录了一些错误,并且它正在处理 cookie 过期。

【讨论】:

    猜你喜欢
    • 2015-06-29
    • 2013-09-12
    • 2015-04-22
    • 1970-01-01
    • 2021-03-10
    • 2010-10-21
    • 2012-08-12
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多