如何删除名为roundcube_sessauth
的特定Cookie?
不应该如下:
function del_cookie(name) {
document.cookie = 'roundcube_sessauth' +
'=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
}
然后:
<a href="javascript:del_cookie(name);">KILL</a>
杀死roundcube_sessauth
Cookie?
答案 0 :(得分:209)
您应该定义cookie存在的路径,以确保删除正确的cookie。
function set_cookie(name, value) {
document.cookie = name +'='+ value +'; Path=/;';
}
function delete_cookie(name) {
document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
如果您没有指定路径,浏览器将设置相对于您当前所在页面的cookie,因此如果您在其他页面上删除cookie,则另一个cookie将继续存在。
根据@Evan Morrison的评论编辑。
请注意,在某些情况下,要识别正确的Cookie,需要Domain
参数
通常它被定义为Domain=.yourdomain.com
在域名前放置 dot 意味着此cookie可能存在于任何子域中(www
也算作子域)。
另外,如@ RobertT的回答所述,HttpOnly
cookie无法在客户端使用JavaScript删除。
答案 1 :(得分:167)
要删除Cookie,请将expires
日期设置为过去的某些内容。执行此操作的功能将是。
var delete_cookie = function(name) {
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};
然后删除名为roundcube_sessauth
的cookie。
delete_cookie('roundcube_sessauth');
答案 2 :(得分:7)
//如果传递exMins = 0,它将在创建后立即删除。
function setCookie(cname, cvalue, exMins) {
var d = new Date();
d.setTime(d.getTime() + (exMins*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
setCookie('cookieNameToDelete','',0) // this will delete the cookie.
答案 3 :(得分:6)
我不确定这是否是来自5月12日的Roundcube版本的情况,但对于当前的情况,答案是你不能从JavaScript中删除roundcube_sessauth
cookie,因为它被标记为{ {1}}。这意味着它无法从JS客户端代码访问,只能通过服务器端脚本或直接用户操作(通过某些浏览器机制,如集成调试器或某些插件)删除。
答案 4 :(得分:0)
您可以尝试此解决方案
.htaccess
答案 5 :(得分:0)
就我而言,我在不同的环境中使用了打击代码。
document.cookie = name +`=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;Domain=.${document.domain.split('.').splice(1).join('.')}`;