似乎无法访问Python中的cookie(2.4)

时间:2010-12-16 00:35:32

标签: python cookies cgi

我有一个CGI脚本,我已成功设置了一个cookie(我可以在Firefox / Chrome中看到!),其中有(比方说)名称uid和内容1.我似乎不明白如何从另一个CGI脚本访问这个cookie - 我在Python 2.4中工作,所以我找到的很多例子可能都不适用。

此代码打印“无法获取uid”,然后是页面的其余部分:

c = Cookie.SimpleCookie(os.environ.get("HTTP_COOKIE"))
print("Content-Type: text/html")
print c.output()
print("\n\n")
uid = c.get("uid")
#uid = c["uid"].value # this would create an error and page would fail totally
if uid is None: 
    print("can't get uid")
    uid = 1 # set manually to prevent the rest of the page from failing

我没有对cookie适用的域做任何可疑的事情,所以我不明白为什么这不会获取uid值。顺便说一句,如果我尝试打印c.output(),它就是空白。

2 个答案:

答案 0 :(得分:0)

首先,您确定网络服务器或框架是否设置了HTTP_COOKIE环境变量? 否则,在您的一个脚本中,您可能希望将cookie存储在文件系统的CookieJar文件中,并从那里访问设置的cookie。

import cookielib

COOKIEFILE = 'Cookies.lwp'
cookiejar = cookielib.LWPCookieJar()
cookiejar.load(COOKIEFILE)
cookiejar["uid"] = 1
cookiejar.save(COOKIEFILE)

加载相同的cookiejar并在另一个脚本中执行uid的获取。

答案 1 :(得分:0)

好的,我想我想出来了!我确认os.environ.get(“HTTP_COOKIE”)正在得到一些东西,然后在我的小测试中使用元素的顺序直到它起作用。然后我在我更复杂的脚本中复制了那个顺序。 (具体来说:内容类型声明,两个换行符,获取cookie,从cookie获取值,其他一切。)

我学到的关于Python和CGI的主要内容是元素的顺序(从内容类型声明开始)非常繁琐。非常感谢正确方向的提示。