How to Delete a Cookie?

Jose C houdinihound69 at gmail.com
Thu Jan 8 13:58:05 EST 2009


On Jan 8, 10:33 am, tryg.ol... at gmail.com wrote:
> On Jan 8, 1:16 pm, Jose C <houdinihoun... at gmail.com> wrote:
>
>
>
> > > c["mycook"]["expires"] = 0
>
> > Set ["expires"] using the following format to any time less than
> > current (which causes the browser to delete the cookie).
> > Here's a function I use to return a cookie expiry timestamp, negative
> > values passed in result in cookie being deleted.
>
> > def cookie_expiry_date(numdays):
> >     """ Returns a cookie expiry date in the required format.  -ve
> > value in = kill cookie.
> >     `expires` should be a string in the format "Wdy, DD-Mon-YY
> > HH:MM:SS GMT"
> >     NOTE!  Must use [expires] because earlier IE versions don't
> > support [max-age].
> >     """
> >     from datetime import date, timedelta
> >     new = date.today() + timedelta(days = numdays)
> >     return new.strftime("%a, %d-%b-%Y 23:59:59 GMT")
>
> > Usage:
> > c["mycook"]["expires"] = cookie_expiry_date(-10)  # any negative value
> > will remove cookie
>
> > HTH,
> > JC
>
> Jose C's piece of code works to delete the cookie as does setting
> ["expires"]=0 but ONLY as long as I also set the path.  Why is this?

The path specifies which directory the cookie is active. Usually the
path is set to /, which means the cookie is valid throughout the
entire domain, but you could set it to /mydir meaning it would only be
active for pages within /mydir.

> So what would be the best way to do this.  I tried reading in the
> existing cookie (b), creating a new cookie (c) with all the same
> values except for the "expires" but this did not get my cookie
> deleted.

To kill the cookie, simply set a cookie with the same name (and path)
and a past date (or 0, although IIRC there was some issue with 0 being
used on a particular browser some time ago, can't remember which on at
the moment) as an 'expires' parameter, is enough to tell the browser
to kill an existing cookie with that same name, regardles of it's
value or previous expiry, etc.

Basically, when you set a cookie, the browser overwrites the previous
one of the same name if it exists.  If not, it creates a new cookie
with your specified parameters.

So in your case, when you want to kill the cookie you set previously,
you should be able to just set a cookie of the exact same name, path
and 'expire' it appropriately, and the browser takes care of the
rest.  Don't worry about assigning it's previous value, the browser is
just going to delete it anyway.

JC



More information about the Python-list mailing list