听起来很简单
def create_cookie():
bag = string.ascii_uppercase + string.ascii_lowercase + string.digits
cookie = Cookie.SimpleCookie()
cookie['sessionid'] = ''.join(random.sample(bag,24))
cookie['sessionid']['expires'] = 600
return 'Set-Cookie: ', cookie.output().replace('Set-Cookie: ', '', 1)
cookie.output()是Set-Cookie:sessionid = YmsrvCMFapXk6wAt4EVKz2uU; expires = Sun,14-Aug-2011 21:48:19 GMT
headers.append(('Content-type', 'text/html'))
headers.append(('Content-Length', str(output_len)))
headers.append(create_cookie)
这是我的回答 ('200 OK',[('Content-type','text / html'),('Content-Length','1204'),('Set-Cookie','sessionid = YmsrvCMFapXk6wAt4EVKz2uU; expires = Sun,14 -Aug-2011 21:48:19 GMT')],'html stuff')
这是我从环境中获得的: HTTP_COOKIE:sessionid = YmsrvCMFapXk6wAt4EVKz2uU
当我点击我页面上的其他链接时,不再有HTTP_COOKIE 使用chrome dev控制台我可以看到请求cookie和页眉包含: Cookie :: sessionid = YmsrvCMFapXk6wAt4EVKz2uU
现在,这让我感到困扰。首先为什么它有双::?我尝试在create_cookie函数中使用'Set-Cookie'而不是'Set-Cookie:'。这样做我从环境中得不到任何HTTP_COOKIE。
所以经过大量的网络搜索,每个人都在谈论中间件(不建议我用一个 - 我这样做是为了学习wsgi)......我空洞了。
答案 0 :(得分:2)
隐形默认行为ftw ...
经过一些密集的调试后,我注意到以下请求中没有包含HTTP_COOKIE,这确实是浏览器端实际发送我可以在浏览器中找到的cookie的问题。
一些挖掘发现默认路径和域行为破坏了我的努力,/ action / login(设置cookie的地方)和/ display / data(未发送cookie的地方)之间的区别是通过设置修复的这种情况下的路径是'/'。
“耶”