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

发布于 2024-10-19 08:44:29 字数 347 浏览 8 评论 0 原文

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

I am trying to include external python module in my project for working with sessions. It's named gmemsess.py. It tries to add Set-Cookie header in the response and an error appears:

rh.response.headers.add_header('Set-Cookie','%s=%s; path=/;'%(name,self._sid))
AttributeError: HeaderDict instance has no attribute 'add_header'

I read documentation and everything seems ok, but it doesn't work. Why this error can appear?
Also, I use webapp2 to manage subdomains. May be there is something goes wrong because of this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风吹雪碎 2024-10-26 08:44:29

如果您使用的是普通 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)

“这应该可以解决您的问题”。

The headers.add_header method should absolutely work if you are using stock AppEngine, but I am guessing that you are using a framework -- and there are plenty of them, like Bottle -- that uses a custom replacement for webob's Response object.

A little bit of time with Google reveals that there is at least one identifiable class called HeaderDict that extends MultiDict, and I think that is what you are dealing with. In that case, you should to into gmemsess.py and change the line

rh.response.headers.add_header('Set-Cookie','%s=%s; path=/;'%(name,self._sid))

to read

rh.response.headers['Set-Cookie'] = '%s=%s; path=/;'%(name,self._sid)

That should fix you right up.

网名女生简单气质 2024-10-26 08:44:29

忽略 - 请参阅下面的评论

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

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

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

Disregard -- see comments below

Is that module written to work with App Engine? The response objects used by App Engine do not have an add_header method, see the docs.

Instead, there's a dict-like object headers that you can just assign values to like

response.headers['Set-Cookie'] = "whatever your cookie value is"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文