В настоящее время я пытаюсь установить безопасный файл cookie для подключения, которое поступает от клиента Python, использующего Tornado, однако, хотя настройка файла cookie работает нормально для подключения входящих сообщений из браузеров , вызов set_secure_cookie не похоже, работает в случае клиента Python.
Ниже приведены выдержки из кода моего сервера Tornado, который обслуживает запросы WebSocket и HTTP:
class BaseHandler(tornado.web.RequestHandler):
def get_current_user(self):
return self.get_secure_cookie("user")
class LoginHandler(BaseHandler):
def get(self):
self.write('<html><body><form action="/login" method="post">'
'Name: <input type="text" name="name">'
'<input type="submit" value="Sign in">'
'</form></body></html>')
def post(self):
print("post received: ", self.get_argument("name"))
try:
print('trying to set cookie')
self.set_secure_cookie("user", self.get_argument("name"))
except Exception as e:
print(e)
print("cookie: ", self.get_current_user())
self.redirect("http://192.168.6.21/")
def main():
application = tornado.web.Application([
(r'/ws', EchoWebSocket),
(r'/login', LoginHandler)
], cookie_secret="nescafeh")
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(9000)
tornado.ioloop.IOLoop.instance().start()
И попытка отправить POST-запрос для установки файла cookie на отдельном клиенте:
s=requests.Session()
r = s.post("http://127.0.0.1:9000/login", data={'name': 'hello'})
sleep(2)
print(r.text)
При попытке установить cookie не возвращаются ошибки, удаление строки «self.redirect» для просмотра ответа на запрос POST не помогает (текст не печатается).
Большое спасибо!