0

由于我的用户已将他们的会话配置为在每次重新打开他们的 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");
});
4

3 回答 3

0

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

域名可能是错误的。

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

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

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

于 2013-04-30T15:00:10.987 回答
0

如果 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 浏览器中的已知错误。请参阅下面的链接 chrome 中的 Cookie 问题

于 2015-04-29T18:03:27.357 回答
0

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

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

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

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

于 2015-09-22T00:30:05.307 回答