|
Wouter van Marle
wouter at squirrel-systems.com
Fri Jan 27 01:38:50 EST 2006
Hi All,
I'm fiddling around with cookies, and after wondering why I always lost
my settings information I did some testing, and ran into what seems a
very very strict limit in cookie length. The code here is based on the
examples of the web pages. From the documentation I find that there is
no strict limit on the size of the value in the cookies, the only limit
I found mentioned in the archives is a 4k http header limit from Apache.
I'd assume I'm way below that.
Test 1 works correctly.
Test 2, with a slightly larger data for the cookie, fails. It is for
some reason not recognised as a valid MarshalCookie! The value used in
this case (the rest of the code being identical):
value = {'egg': 32,
'color': 'white',
'foo': 'bar',
'foobar': 5}
Here the code of Test 1 (maybe with some extra line breaks due to e-mail
formatting):
from mod_python import Cookie, apache
import time
def handler(req):
req.content_type = "text/html; charset=utf-8"
cookies = Cookie.get_cookies(req, Cookie.MarshalCookie,
secret='secret007')
if cookies.has_key('spam'):
spamcookie = cookies['spam']
req.write('Great, a spam cookie was found: %s\n' \
% str(spamcookie))
if type(spamcookie) is Cookie.MarshalCookie:
req.write('Here is what it looks like decoded: %s=%s\n'
% (spamcookie.name, spamcookie.value))
else:
req.write('WARNING: The cookie found is not a \
MarshalCookie, it may have been tapered with!')
else:
value = {'egg': 32,
'color': 'white',
'foo': 'bar'}
Cookie.add_cookie(req, Cookie.MarshalCookie('spam', value, 'secret007'))
req.write('Spam cookie not found, but we just set one!\n')
return
|