在GAE中尝试使用Set-Cookie添加标头时出错

时间:2011-02-25 14:53:08

标签: python google-app-engine session webapp2

我正在尝试在我的项目中包含外部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 个答案:

答案 0 :(得分:5)

headers.add_header方法应该绝对有用,如果你使用的是AppEngine库存,但我猜你正在使用一个框架 - 而且有很多它们,比如Bottle,它们使用了{的自定义替代品{3}}对象。

Google的一点时间显示,至少有一个名为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)

那应该可以解决你的问题。

答案 1 :(得分:3)

无视 - 请参阅以下评论

该模块是否与App Engine一起使用? App Engine使用的响应对象没有add_header方法,请参阅the docs

相反,有一个像字典一样的对象headers,您只需将值分配给

response.headers['Set-Cookie'] = "whatever your cookie value is"