How exactly does document.cookie work?
Solution 1
document.cookie
has very special behavior. As you've seen, assigning to it adds (or updates) a cookie (or multiple cookies), rather than replacing all of the cookies. It's very unusual.
Read all about it on MDN.
Solution 2
The string on the right side of the assignment operator to document.cookies
should be a semicolon separated list of key-value pairs, i.e. document.cookie = "aKey=5"
will set/update the aKey
cookie.
So yes, document.cookie
shows special behavior.
Solution 3
Here is an example of your "issue". Also, it says the following:
You can delete a cookie by simply updating its expiration time to zero.
Jack M
Updated on June 05, 2020Comments
-
Jack M almost 4 years
If I get Chrome to show me
document.cookie
by going into the console and typingdocument.cookie;
it'll give me, say:"name=John; gender=male";
But then if I type in, say,
document.cookie = 5;
all it does is add5;
to the start of the string, so I get:"5; name=John; gender=male";
If I try
document.cookie = null;
then it doesn't even do anything.How can this be? It's a variable, isn't it? So why isn't the assignment operator working the way it should? Is it actually just a bit of syntactic sugar rather than a real variable? And if so, what precisely is the sugar covering up?
-
T.J. Crowder almost 13 years@Daniel: No disagreement here. I can't imagine why it would need to be so...obtuse, even back in the day. I mean, an array-like thing with
Cookie
elements, how cutting edge! ;-) -
Jack M almost 13 yearsSo how is this "unusual" behavior implemented? Is it at the interpreter level or does javascript support some kind of operator redefining?
-
T.J. Crowder almost 13 years@Jack:
document
is what the ECMAScript specification calls a "host object," not a native object. Host objects can do nearly anything they want to, their semantics lie mostly outside the specification. Ultimately, the assignment becomes an abstract PutValue call on the host object. What the host environment (browser, in this case) does with that is up to the host environment. -
scubbo over 11 yearsI hope I don't come across as nit-picking here, but was the pluralisation of your first
document.cookie
intentional? I'm not sure if this is a distinct concept. -
Ellie Kesselman about 10 yearsAlso, it now says "This article is in need of a technical review." It is still a great reference page though. Thank you!
-
Giannis Paraskevopoulos almost 10 yearsI wish i could upvote more...This info saved my day.