Разрешение DNS в Chrome / Firefox на целую секунду дольше, чем в Safari

Я также хотел прочитать файл 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 довольно мала - дюжина символов или около того.)

0
задан Pat Gaddis 18 January 2019 в 04:04
поделиться