web-dev-qa-db-fra.com

Comment fonctionne exactement document.cookie?

Si je reçois Chrome pour me montrer document.cookie en allant dans la console et en tapant document.cookie; ça me donnera, dis:

"name=John; gender=male";

Mais si je tape, disons, document.cookie = 5; il suffit d'ajouter 5; au début de la chaîne, donc j'obtiens:

"5; name=John; gender=male";

Si j'essaie document.cookie = null; alors ça ne fait même rien.

Comment se peut-il? C'est une variable, non? Alors pourquoi l'opérateur d'affectation ne fonctionne-t-il pas comme il le devrait? Est-ce en fait juste un peu de sucre syntaxique plutôt qu'une vraie variable? Et si oui, que recouvre précisément le sucre?

33
Jack M

document.cookie a un comportement très spécial. Comme vous l'avez vu, l'assigner ajoute (ou met à jour) un cookie (ou plusieurs cookies), plutôt que remplaçant tous les cookies. C'est très inhabituel.

Lisez tout à ce sujet sur MDN .

32
T.J. Crowder

Pourquoi ne pas jeter un œil à MDN?

La chaîne sur le côté droit de l'opérateur d'affectation à document.cookies doit être une liste séparée par des points-virgules de paires clé-valeur, c'est-à-dire document.cookie = "aKey=5" définira/mettra à jour le cookie aKey.

Donc oui, document.cookie montre un comportement spécial.

6
Alexander Gessler

Voici un exemple de votre " issue ". En outre, il dit ce qui suit:

Vous pouvez supprimer un cookie en mettant simplement à zéro son heure d'expiration.

3
Sascha Galley