【发布时间】:2017-07-12 03:06:30
【问题描述】:
我使用 Tornado 4.2 开发了一个相当大的 Web 应用程序。我的应用程序的一个处理程序负责通过发布请求验证用户的登录详细信息。
特别是在这个处理程序中,我使用带有set_secure_cookie 的签名cookie 来识别登录的用户及其权限,使用以下代码:
self.set_cookie("user", self.get_argument("username"), domain=".my-domain.com", expires_days=None, httpOnly=True)
self.set_secure_cookie("access", str(data['permissions']), expires_days=None, httpOnly=True)
设置 cookie 后,我使用 Tornado 的 redirect 将用户发送到另一个 URL。
self.redirect("/"+lang+"/base_fx.html")
在大多数情况下,它按预期工作,没有任何问题。但是,对于某些用户,我收到以下错误。
self.redirect("/"+lang+"/base_fx.html")
File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 671, in redirect
self.finish()
File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 934, in finish
self.flush(include_footers=True)
File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 884, in flush
self.add_header("Set-Cookie", cookie.OutputString(None))
File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 339, in add_header
self._headers.add(name, self._convert_header_value(value))
File "/usr/lib/python2.7/dist-packages/tornado/web.py", line 369, in
_convert_header_value
raise ValueError("Unsafe header value %r", value)
ValueError: ('Unsafe header value %r', 'access="2|1:0|10:1485161516|6:access|3892:eydvd…<long string>..f0a2f8ad"; httponly; Path=/')
ERROR:tornado.general:Cannot send error response after headers written
有没有人遇到过类似的问题?
【问题讨论】:
标签: python post http-headers tornado