Настройка безопасного куки для подключения клиента Python - PullRequest
0 голосов
/ 16 мая 2018

В настоящее время я пытаюсь установить безопасный файл 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 не помогает (текст не печатается).

Большое спасибо!

1 Ответ

0 голосов
/ 16 мая 2018

r.text пусто, потому что вы ничего не записываете в тело ответа в вашем обработчике.

Попробуйте self.write("something") в методе post вашего обработчика и r.text должен распечатать ответ.

Вы также можете проверить r.cookies, чтобы увидеть, установлен ваш cookie или нет.

...