Как отметил Ричард Х, данные в файлах cookie видны пользователю, если они знают, где искать. Так что это не очень хорошее место для хранения секретов.
Тем не менее, у меня было другое приложение, в котором нужно было хранить много данных на стороне клиента, и я столкнулся с этой же проблемой. (В моем приложении мне нужно было сделать приложение способным работать в автономном режиме и сохранять действия пользователя в случае сбоя ПК или сбоя веб-сайта.) Решение довольно простое:
1) Сохраните данные cookie в переменной JavaScript. (Или сохранить его в переменной уже.)
2) Удалить куки. Вот функция, которая может стереть куки:
function cookieErase (name) {
document.cookie = name+'=; Max-Age=-99999999;path=/';
}
Если у вас есть несколько файлов cookie (как было в моем случае), вы должны запустить вышеуказанную функцию для каждого файла cookie, который вы сохранили. Существует код для итерации каждого файла cookie, но на практике вы, вероятно, уже знаете названия больших файлов cookie и не хотите удалять другие файлы cookie, на которые полагается ваш веб-сайт.
3) Отправьте запрос как обычно.
4) Восстановить данные cookie из сохраненных переменных.
Вот некоторые оптимизации, которые вы можете использовать:
1) Этот код активируется только при неверном запросе статуса 400 (что вы получите, если данные cookie слишком велики). Иногда ваши данные не слишком велики, поэтому удаление не требуется.
2) Восстановите данные куки после тайм-аута, если они не нужны немедленно. Таким образом, вы можете сделать несколько запросов и восстановить данные только в случае простоя. Это означает, что ваши пользователи могут получить быстрый опыт при активном использовании вашего сайта.
3) В тот момент, когда вы сможете, попытайтесь переместить любые данные на серверную сторону, чтобы снизить нагрузку на клиента / связь. В моем случае, когда подключение восстановлено, все действия синхронизируются как можно скорее.