206 votes

Supprimer le cookie par son nom ?

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

Les éléments suivants ne devraient-ils pas :

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

Et puis :

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

Tuer le roundcube_sessauth cookie ?

359voto

emii Points 3434

Vous devez définir le chemin sur lequel le cookie existe pour vous assurer que vous supprimez le bon 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;';
}

Si vous ne spécifiez pas le chemin d'accès, le navigateur définira un cookie relatif à la page sur laquelle vous vous trouvez actuellement, de sorte que si vous supprimez le cookie alors que vous êtes sur une autre page, l'autre cookie continue d'exister.

Modification basée sur le commentaire de @Evan Morrison.
Sachez que, dans certains cas, pour identifier le bon cookie, le programme Domain est nécessaire.
Habituellement, il est défini comme suit Domain=.yourdomain.com .
Placer un point devant votre nom de domaine signifie que ce cookie peut exister sur n'importe quel sous-domaine ( www compte également comme sous-domaine).

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

203voto

Pour supprimer un cookie, il faut utiliser l'option expires date de quelque chose dans le passé. 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 faites-le.

delete_cookie('roundcube_sessauth');

11voto

Kishor Patil Points 211

//si on lui passe exMins=0, il le supprimera dès qu'il l'aura créé.

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.

10voto

RobertT Points 751

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

2voto

Nafees Points 21

Vous pouvez essayer cette solution

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X