2015-05-25 1 views

ответ

0

Tornado использует http.cookies.Cookie.SimpleCookie для разбора куки в заголовке запроса. Это создает словарь http.cookies.Morsel экземпляров (https://docs.python.org/3/library/http.cookies.html?highlight=cookies#morsel-objects), которые содержат информацию о каждом файле cookie.

Вы можете получить доступ к списку печенья против ваших RequestHandler «ы request собственности, например:

class MyHandler(RequestHandler): 

    def get(self): 

     for cookie_key in self.request.cookies.keys(): 
      cookie = self.request.cookies[cookie_key] 
      print(cookie_key, cookie['expires'], cookie.output()) 

Я проверил это на экземпляре торнадо работает локально, и это делает выходные сведения о куках на консоль , однако дата expires не передается браузером (хром) в запросе на сервер и поэтому не может быть восстановлена.

Я не вижу никакого гарантированного способа извлечения информации о expires дате таким образом, вы могли бы извлечь expires даты (который доступен на стороне клиента) и сохранить его в качестве дополнительных куков потенциально использовать JavaScript (например my_cookie имеет значение, а my_cookie_expires имеет дату expires для my_cookie). Я уверен, что это не идеальное решение, но в зависимости от того, насколько критично решение этой проблемы, это может быть вариант.

0

С обычными кукисами вы не можете прочитать время истечения срока действия - оно просто не отправляется как часть протокола cookie. Все, что вы получаете, это ценность. Это значение, однако, может быть любым, что вы хотите, поэтому вы можете закодировать время истечения срока действия в значение, чтобы сделать его доступным на сервере (это то, что делают безопасные файлы cookie от Tornado, хотя время истечения срока его использования не распространяется на приложение) , Я рекомендую json-encoding словарь, чтобы сделать значение cookie.