Я разработал довольно большое веб-приложение с использованием Tornado 4.2. Один из обработчиков моего приложения отвечает за проверку регистрационных данных пользователя через почтовый запрос.ValueError: Небезопасное значение заголовка
В частности, в этом обработчике я использую подписанные печенья с set_secure_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)
После установки куки я использую смерч redirect, чтобы отправить пользователь другой URL.
В большинстве случаев он работает так, как ожидается, без каких-либо проблем. Однако для некоторых пользователей я получаю следующую ошибку.
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
Неужели кто-нибудь сталкивался с подобной проблемой?
Благодаря @Georg! Поэтому проблема заключается в том, что я не проверял источник для моей установленной версии, но для новейшей версии.Спасибо, что указал мне в правильном направлении, я проголосовал и разместил решение для этого :) – afxentios