【发布时间】: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