在GAE中尝试添加Set-Cookie头时出错
我正在尝试在我的项目中引入一个外部的Python模块,用来处理会话。这个模块叫做 gmemsess.py
。它试图在响应中添加一个Set-Cookie的头信息,但出现了一个错误:
rh.response.headers.add_header('Set-Cookie','%s=%s; path=/;'%(name,self._sid))
AttributeError: HeaderDict instance has no attribute 'add_header'
我查看了文档,感觉一切都没问题,但就是不管用。这个错误为什么会出现呢?另外,我使用webapp2来管理子域名。可能是因为这个原因出错了吗?
2 个回答
3
忽略 -- 请查看下面的评论
这个模块是为了和App Engine一起使用而写的吗?App Engine使用的响应对象没有add_header
这个方法,具体可以查看文档。
相反,它有一个像字典一样的对象headers
,你可以像下面这样给它赋值:
response.headers['Set-Cookie'] = "whatever your cookie value is"
5
如果你在使用标准的AppEngine,headers.add_header
这个方法应该是可以正常工作的。不过我猜你可能在用某个框架,比如Bottle,这些框架会用一个自定义的东西来替代webob的Response对象。
稍微在谷歌上查一下,你会发现有一个叫做HeaderDict的类,它是MultiDict的扩展,我觉得你可能就是在处理这个。在这种情况下,你需要打开gmemsess.py
文件,找到这一行
rh.response.headers.add_header('Set-Cookie','%s=%s; path=/;'%(name,self._sid))
然后把它改成
rh.response.headers['Set-Cookie'] = '%s=%s; path=/;'%(name,self._sid)
这样应该就能解决你的问题了。