3

我正在尝试在我的项目中包含外部 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 来管理子域。可能是因为这个而出了什么问题?

4

2 回答 2

5

如果您使用的是库存 AppEngine,该headers.add_header方法绝对可以工作,但我猜您正在使用一个框架 - 并且有很多框架,比如 Bottle - 使用自定义替换webob 的 Response对象。

与 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)

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

于 2011-02-25T15:38:11.290 回答
3

无视——见下面的评论

该模块是为与 App Engine 一起工作而编写的吗?App Engine 使用的响应对象没有add_header方法,请参阅文档

相反,有一个类似 dict 的对象headers,您可以将值分配给 like

response.headers['Set-Cookie'] = "whatever your cookie value is"
于 2011-02-25T15:04:33.560 回答