按名称删除Cookie?
如何删除一个名为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?
为了删除一个cookie,将expires
date设置为过去的事情。 这样做的function是。
var delete_cookie = function(name) { document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;'; };
然后删除一个名为roundcube_sessauth
的cookie就行了。
delete_cookie('roundcube_sessauth');
您应该定义cookie存在的path,以确保您删除了真实的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;'; }
如果您不指定path,浏览器会将您当前所在的页面设置为相对于您的页面,因此如果您在不同页面上删除Cookie,则其他Cookie将继续存在。
编辑基于@Evan Morrison的评论。
请注意,在某些情况下,为了识别正确的Cookie, Domain
参数也是必需的。
通常用作Domain=.yourdomain.com
域名前面的时间段表示该cookie可能存在于任何子域( www
也被视为子域)。
另外,正如@ RobertT的回答所提到的, HttpOnly
cookies不能在客户端用JavaScript删除。
我真的不确定这是否是2012年5月份的Roundcube版本的情况,但对于当前的情况,答案是您不能从JavaScript删除roundcube_sessauth
cookie,因为它被标记为HttpOnly
。 这意味着它不能从JS客户端代码访问,只能通过服务器端脚本或直接用户操作(通过一些浏览器机制,如集成debugging器或一些插件)删除。
//如果传递exMins = 0,它将在创build它时立即删除。
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.