web-dev-qa-db-fra.com

Supprimer le cookie par son nom?

Comment puis-je supprimer un cookie spécifique avec le nom roundcube_sessauth?

Ne devrait pas ce qui suit:

function del_cookie(name) {
    document.cookie = 'roundcube_sessauth' + 
    '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
} 

Et alors:

<a href="javascript:del_cookie(name);">KILL</a>

Tuer le cookie roundcube_sessauth?

117
Charlie

Pour supprimer un cookie, définissez la date expires sur une date antérieure. Une fonction qui fait cela serait.

var delete_cookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};

Ensuite, pour supprimer un cookie nommé roundcube_sessauth, il suffit de le faire.

delete_cookie('roundcube_sessauth');
159
user672118

Vous devez définir le chemin sur lequel le cookie existe pour vous assurer de supprimer le vrai

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;';
}

Si vous ne spécifiez pas le chemin d'accès, le navigateur définit le cookie par rapport à la page sur laquelle vous vous trouvez. Ainsi, si vous supprimez le cookie sur une page différente, un autre cookie continue d'exister.

Éditer basé sur le commentaire de @Evan Morrison.
Sachez que dans certains cas, pour identifier le bon cookie, le paramètre Domain est également requis.
Habituellement utilisé comme Domain=.yourdomain.com
La période précédant le nom de domaine signifie que ce cookie peut exister sur n’importe quel sous-domaine (www compte également comme sous-domaine). 

En outre, comme indiqué dans la réponse de @ RobertT, les cookies HttpOnly ne peuvent pas être supprimés avec JavaScript du côté client.

192
emii

// si passé exMins = 0, il sera supprimé dès qu'il le crée.

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.
7
Kishor Patil

Je ne sais pas vraiment si c'était le cas avec la version de Roundcube du 12 mai, mais pour la version actuelle, la réponse est que vous ne pouvez pas supprimer le cookie roundcube_sessauth de JavaScript, car il est marqué comme suit: HttpOnly. Et cela signifie qu'il n'est pas accessible à partir du code côté client JS et qu'il ne peut être supprimé que par un script côté serveur ou par une action directe de l'utilisateur (via des mécanismes de navigateur tels que le débogueur intégré ou un plugin).

6
RobertT

Vous pouvez essayer cette solution

var d = new Date();
d.setTime(d.getTime() + (0*60*1000));
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.com;path=/;expires=" + expires;
0
Nafees