我正在尝试在我的项目中包含外部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来管理子域。因为这个可能会出现问题吗?
答案 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"