469,349 Members | 1,578 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,349 developers. It's quick & easy.

Cookie Confusion - How to Set a Cookie

Hi -

I am trying my hand at python cookies. I'm confused about a few
things though. Do the python cookies get written to a cookies text
file? I have simple code below -- I see the cookie in my HTTP header
but do not get anything in the cookie text file. I'm working on
linux.

print "Content-type: text/html"
cookie = Cookie.SimpleCookie()
cookie['Test'] = 'abc'
print cookie
print

Are there rules about where in the header the set cookie line should
be?

Thanks in advance!
Christian
Jun 27 '08 #1
5 2938
On Apr 28, 9:42 am, cbh...@gmail.com wrote:
....I see the cookie in my HTTP header
but do not get anything in the cookie text file. I'm working on
linux.

print "Content-type: text/html"
cookie = Cookie.SimpleCookie()
cookie['Test'] = 'abc'
print cookie
print

Are there rules about where in the header the set cookie line should
be?
Hi Christian. I think the cookie can go anywhere in
the header, but I usually put it before the content-type.
If you want to store the cookie to a file,
or even better, to a database of some sort, you have to
do it yourself, the Cookie module doesn't do it for you,
I hope.

# store cookie to /tmp/cookie.txt
file("/tmp/cookie.txt","w").write(str(cookie))

For parsing cookies, I stole and modified this from
the Django source (for use in a cgi script):

===
from Cookie import SimpleCookie
import os

# stolen and modified from Django
def parse_cookie(cookie=None, environ=None):
if cookie is None:
if environ is None:
environ = os.environ
cookie = environ.get('HTTP_COOKIE', '')
if cookie == '':
return {}
c = SimpleCookie()
c.load(cookie)
cookiedict = {}
for key in c.keys():
cookiedict[key] = c.get(key).value
return cookiedict

===
All the best. -- Aaron Watters

===
http://www.xfeedme.com/nucular/pydis...EETEXT=monster
Jun 27 '08 #2
On Apr 28, 1:37 pm, Aaron Watters <aaron.watt...@gmail.comwrote:
On Apr 28, 9:42 am, cbh...@gmail.com wrote:
....I see the cookie in my HTTP header
but do not get anything in the cookie text file. I'm working on
linux.
print "Content-type: text/html"
cookie = Cookie.SimpleCookie()
cookie['Test'] = 'abc'
print cookie
print
Are there rules about where in the header the set cookie line should
be?

Hi Christian. I think the cookie can go anywhere in
the header, but I usually put it before the content-type.
If you want to store the cookie to a file,
or even better, to a database of some sort, you have to
do it yourself, the Cookie module doesn't do it for you,
I hope.

# store cookie to /tmp/cookie.txt
file("/tmp/cookie.txt","w").write(str(cookie))

For parsing cookies, I stole and modified this from
the Django source (for use in a cgi script):

===
from Cookie import SimpleCookie
import os

# stolen and modified from Django
def parse_cookie(cookie=None, environ=None):
if cookie is None:
if environ is None:
environ = os.environ
cookie = environ.get('HTTP_COOKIE', '')
if cookie == '':
return {}
c = SimpleCookie()
c.load(cookie)
cookiedict = {}
for key in c.keys():
cookiedict[key] = c.get(key).value
return cookiedict

===
All the best. -- Aaron Watters

===http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=monster

Thanks for the code, Aaron. I will give it a try.

I've been reading some more about cookielib and am not sure whether I
should use Cookie or cookielib. This is what I want to do: a user is
going to login. Upon a successful login, I want to write their name
and date/time of visit to a cookie file. Which is the correct python
module to use?
Jun 27 '08 #3
Thanks for the code, Aaron. I will give it a try.

I've been reading some more about cookielib and am not sure whether I
should use Cookie or cookielib. This is what I want to do: a user is
going to login. Upon a successful login, I want to write their name
and date/time of visit to a cookie file. Which is the correct python
module to use?
Cookie does parsing and generation of cookie strings
for server-side applications like your CGI script.

The cookielib module
is designed for either implementing a client like a web browser
or emulating a client/browser (for web scraping, for example).

I think you want to use Cookie.
The distinction could be made clearer in
the docs, imho.

Also, when you say "write the cookie file" I think you mean
"store the cookie to the client browser". This should happen
automatically when you send the cookie header to the client
correctly (if the client is configured to cooperate).

-- Aaron Watters

===
http://www.xfeedme.com/nucular/pydis...t+does+nothing
Jun 27 '08 #4
On Apr 29, 3:35 pm, Aaron Watters <aaron.watt...@gmail.comwrote:
Thanks for the code, Aaron. I will give it a try.
I've been reading some more about cookielib and am not sure whether I
should use Cookie or cookielib. This is what I want to do: a user is
going to login. Upon a successful login, I want to write their name
and date/time of visit to a cookie file. Which is the correct python
module to use?

Cookie does parsing and generation of cookie strings
for server-side applications like your CGI script.

The cookielib module
is designed for either implementing a client like a web browser
or emulating a client/browser (for web scraping, for example).

I think you want to use Cookie.
The distinction could be made clearer in
the docs, imho.

Also, when you say "write the cookie file" I think you mean
"store the cookie to the client browser". This should happen
automatically when you send the cookie header to the client
correctly (if the client is configured to cooperate).

-- Aaron Watters

===http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=default+does+n...

Sorry for the slow replies. I've been in & out with a sick child.

I'm used to my javascript cookies. They are automatically written to
a cookie.txt file in a .mozilla dir under my user. When I say to
'write the cookie file' this is what I was referring to. I was
expecting my python cookie to automatically get written to the same
file. I have't seen this happen yet.
Jun 27 '08 #5
On May 1, 9:02 am, cbh...@gmail.com wrote:
On Apr 29, 3:35 pm, Aaron Watters <aaron.watt...@gmail.comwrote:
Thanks for the code, Aaron. I will give it a try.
I've been reading some more about cookielib and am not sure whether I
should use Cookie or cookielib. This is what I want to do: a user is
going to login. Upon a successful login, I want to write their name
and date/time of visit to a cookie file. Which is the correct python
module to use?
Cookie does parsing and generation of cookie strings
for server-side applications like your CGI script.
The cookielib module
is designed for either implementing a client like a web browser
or emulating a client/browser (for web scraping, for example).
I think you want to use Cookie.
The distinction could be made clearer in
the docs, imho.
Also, when you say "write the cookie file" I think you mean
"store the cookie to the client browser". This should happen
automatically when you send the cookie header to the client
correctly (if the client is configured to cooperate).
-- Aaron Watters
===http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=default+does+n...

Sorry for the slow replies. I've been in & out with a sick child.

I'm used to my javascript cookies. They are automatically written to
a cookie.txt file in a .mozilla dir under my user. When I say to
'write the cookie file' this is what I was referring to. I was
expecting my python cookie to automatically get written to the same
file. I have't seen this happen yet.
Hmmm. I don't know how cookies are stored on the client.
I recommend using the standard cgi debug
environment dump after setting
a cookie to see if the cookie is coming back to the server.
If it is not something is wrong -- you are setting it incorrectly,
or the server or client is blocking the cookie.

Note if you are testing on one machine: some browsers
and servers have by default
special security restrictions on
"localhost" loopbacks -- it may be that this is causing
either the server or the client to ignore the cookie.

-- Aaron Watters
===
http://www.xfeedme.com/nucular/pydis...REETEXT=cooked
Jun 27 '08 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by middletree | last post: by
6 posts views Thread by David Graham | last post: by
5 posts views Thread by Charly Walter | last post: by
5 posts views Thread by brettr | last post: by
17 posts views Thread by James Johnson | last post: by
2 posts views Thread by venkat | last post: by
5 posts views Thread by sophie_newbie | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.