Я также хотел прочитать файл cookie (который был установлен на сервере) на клиенте. Я работал над проблемой с помощью base64, кодирующего JSON String, но есть и несколько небольших ошибок, связанных с этим подходом.
1: строки Base64 заканчиваются знаками равными 0-2, и они были преобразованы в строку \ 075. Мой подход состоит в том, чтобы вернуть эти символы в равные символы на клиенте.
2: Строка base64 заключена в символы двойной кавычки в файле cookie. Я удаляю их на клиенте.
Сервер:
nav_json = json.dumps(nav_data)
nav_b64=base64.b64encode(nav_json)
self.response.set_cookie('nav_data', nav_b64)
Клиент:
var user_data_base64= $.cookie('nav_data');
// remove quotes from around the string
user_data_base64 = user_data_base64.replace(/"/g,"");
// replace \075 with =
user_data_base64 = user_data_base64.replace(/\\075/g,"=");
var user_data_encoded=$.base64.decode( user_data_base64 );
var user_data = $.parseJSON(user_data_encoded);
Я использую 2 плагина jquery: https : //github.com/carlo/jquery-base64 и https://github.com/carhartl/jquery-cookie
Примечание: я считаю это a hack: Было бы лучше повторить реализацию кода python, который кодирует cookie в javascript, однако это также имеет недостаток, который вам нужно будет заметить, и порт и изменения этого кода.
У меня теперь есть переместился в решение, где я использую небольшой файл html, чтобы установить cookie на стороне клиента, а затем перенаправить на запрашиваемую страницу. Вот фрагмент из шаблона JINJA2, который я использую:
Примечание 2: Cookies не идеальны для моего варианта использования, и я, вероятно, перейду к сеансу или локальному хранилищу, чтобы уменьшить накладные расходы сети ( хотя моя nav_data довольно мала - дюжина символов или около того.)