Задать вопрос
miv-men
@miv-men
Фронт и бэк

Почему кука обрезается на 330 символов?

Здравствуйте.

Мне необходимо данные из формы сохранить в куки и использовать их на другой странице на бекенде.

Через js я сохраняю все данные в json-е
document.cookie = 'card_new=' + JSON.stringify(params)

После на нужной странице получаю их на бекенде.

На десктопах и андройде все работает как положенно, но при тестировании на iphone кука 'card_new' обрывается на 330 символов, соотвественно json получается не полный и "битый".
Я попытался нагуглить, ни где не нашел какие то ограничения на запись куки, на самом телефоне нет ограничений, памяти достаточно.
Проверил JSON.stringify(params) перед записью в куки, он всегда полный. Проблема именно в куках.
В чем может быть проблема? Как то можно айфон уговорить сохранить все данные?

P.S. Строка прерывается на месте указанном на скриншоте:
681f4e8d64ec8806281290.png
  • Вопрос задан
  • 47 просмотров
Подписаться 1 Средний 4 комментария
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Короче, есть 3 с половиной решения:
1) Половина раз - сконвертировать полученную жсон строку в бэйс64 или урленкод, класть в куки. Это просто и решается декодом стрки на стороне сервера за 2 минуты. Половина два - разобраться что за символ ломает строку, тупо сравнив что лежит в куках и что дает стрингифай. Что делать - уже решать по ситуации, может конкретно какой-то параметр привести к нормальному формату и все.
2) Покласть все нужное в локалстораж, при обращении к нужной странице передавать данные любым удобным способом, вплоть до гет параметра в урл.
3) Если данные нужны для страницы на бэкенде, логичнее хранить их на бэкенде, в сессии, бд или любом другом хранилище на стороне сервера.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@artem-dainov
Php, java, js. Boot spring, jquery, git
Такое лучше не делать.
Я так понимаю вы хотите сохранить корзину. Но при проектирование магазинов такое нельзя делать.
Это не лучший вариант. Куку можно отредактировать и тд.
Обычно для этого создаётся связующая таблица и выглядит всё примерно так.
1. Пользователь пришел на сайт. Выдали ему уникальный номер. Для уникальных номеров кто что использует. Но я обычно создаю отдельную таблицу.
2. Создаётся связующая таблица между объектом товара и пользователем. В нее помещается id объекта товара, id пользователя и прочая информация, типа цена, скидка, количество.
3. Всё. Далее, где вам нужно получить эту информацию, получайте уникальный номер пользователя, который вы в куках сохранили, и подтягивайте её.
Ну а что по самой куки, то тут есть ограничения на 4 килобайта информации. Но вы должны учитывать, что в эти 4кб входит не только содержимое, но и настройки самой куки.
Да и каждый браузер может вести себя по разному.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы