【问题标题】:How to Delete all Cookies on my site except for one如何删除我网站上的所有 Cookie,除了一个
【发布时间】:2015-04-23 02:30:44
【问题描述】:

我正在使用以下函数来清除所有 cookie,这很有效。 据我所知,这也清除了PHPSESSID。我只想单独保留那一个 cookie。

我添加了行:if (name == "PHPSESSID") {... ...尝试捕获并跳过,更改 cookie 名称 PHPSESSID,但由于某种原因它没有捕获它。

是否有明确的原因导致它无法捕获,或者是否有更好的方法来清除除“PHPSESSID”之外的所有 cookie?

功能:

function clearCookies() {

    var cookies = document.cookie.split(";");
    for(var i=0; i < cookies.length; i++) {
        var equals = cookies[i].indexOf("=");
        var name = equals > -1 ? cookies[i].substr(0, equals) : cookies[i];
        if (name == "PHPSESSID") {
            alert("yes");
        }else{
            document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
            alert(name);

        }
    }
}

【问题讨论】:

  • 您可以记录名称并发布输出内容吗?
  • 而且您确定 cookie 不是 httponly,如果不是,您可以将其设置为 httponly,并且 JavaScript 根本无法访问它,这是一件好事
  • 尝试更改会话名称 'session_name('someName'); ' 然后尝试
  • 好吧,当我输入警报(名称)时,它会显示“PHPSESSID”(当然没有引号。所以也许在更基本的层面上,我不明白为什么“if( name == "PHPSESSID") 部分没有捕捉到。在 chrome 开发人员工具中,它直截了当地说名称是“PHPSESSID”。

标签: javascript cookies


【解决方案1】:

您好,我通过使用 DevTool 的控制台日志而不是 cookie 查看器找到了答案。当 PHPSESSID 出于某种原因设置时,它的前面有一个空格。所以 “PHPSESSID”有效。

这里的解决方案:在控制台日志中输出而不是警报。

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 2018-04-19
    • 2011-10-01
    • 2010-11-26
    • 2011-09-18
    • 1970-01-01
    • 2014-06-25
    相关资源
    最近更新 更多