Skip to content Skip to sidebar Skip to footer

Why Would Setting Document.cookie Not Work In Chrome?

My coworker ran into an issue where NO cookie could be set on Chrome via code like this: document.cookie = 'TEST=1; expires=Tue, 14 Oct 2014 20:23:32 GMT; path=/' Putting document.

Solution 1:

The way cookies work, at least in Chrome, is a bit weird.

If you need to change a cookie's value, then you need to add/set each keys one by one.

Try this in your console:

document.cookie; // -> "expires=Tue, 14 Oct 2014 20:23:32 GMT; path=/"document.cookie = 'TEST=1';
document.cookie; // -> "TEST=1; expires=Tue, 14 Oct 2014 20:23:32 GMT; path=/"

Yes, it has added the key, and not replace the whole cookie with TEST=1.

If you need to remove a key, you can simple provide no value: TEST=.

I hope this will get you out of the cookie nightmare (it was for me).

Solution 2:

Make sure to run it on a server (at least a local server) so that document.cookie works.

If you locally run this file in the browser. "document.cookie" wouldn't work.

Solution 3:

As another user mentioned, you have to set them one-by-one. These functions can be useful in parsing & applying a cookie string:

functionclearCookies(){
    var cookies = document.cookie.split(';');
    for(i in cookies){
        var vals = cookies[i].split('=');
        var name = vals.shift(0, 1).trim();
        document.cookie = name+'=';
    }
}
functionparseCookies(cookie){
    clearCookies();
    var cookies = cookie.split(';');
    for(i in cookies){
        var vals = cookies[i].split('=');
        var name = vals.shift(0, 1).trim();
        document.cookie = name+'='+vals.join('=');
    }
}

Solution 4:

The expiry date set for the cookie might be the problem. I have come into a problem like this before on Chrome. Set the date to present or future date and test if it would work. Probably that was how Chrome was designed.

Post a Comment for "Why Would Setting Document.cookie Not Work In Chrome?"