2015-10-08 4 views
0

Я пользуюсь библиотекой js-cookie. Раньше я использовал jquery.cookie. У меня есть проблема с дублированием записей в cookie. некоторое время, когда я называюПочему есть несколько дублированных записей, когда я устанавливаю cookie?

Cookies.set('my-cookie-name', 'value', {'path': '/'}); 

Я уверен, что я называю этот метод только одно место в моем коде, но в результате у меня есть:

--------------------------------------------------------------- 
Name    Value  Domain    Path 
--------------------------------------------------------------- 
my-cookie-name  1   mydomain.com  /foo/bar/ 
my-cookie-name  value  mydomain.com  /
--------------------------------------------------------------- 

Это не происходит каждый раз. Эта проблема встречается редко, поэтому ее трудно поймать. В этот момент я удаляю cookie перед установкой нового значения и не поймаю проблему снова. Но я думаю, что это неправильное использование.

Cookie с именем 'my-cookie-name' устанавливает только в одном месте кода. Эта проблема улавливается на моей машине dev, поэтому она не может быть старым файлом cookie.

Я использую его для переключения состояния. Я имею в виду вот так:

var state = 'on'; 
$elem.on('click', function(e){ 
    state = state === 'on' ? 'off' : 'on'; 
    Cookies.set('my-cookie-name', state, {path: '/'}); 
}); 

Возможно, это неправильное использование? И мне нужно удалить старый файл cookie перед установкой нового значения?

Браузер: Chrome v45

This issue on GitHub

ответ

0

Куки определяется своей области, пути и защищенных атрибутов, вы должны проявлять особую осторожность, чтобы избежать дубликатов.

Но почему это может произойти? Трудно сказать, но вот моя теория:

  1. Даже если вы его один раз назовете, пользователь может уже иметь cookie локально. Изменение кода не удаляет cookie, который был сохранен ранее.
  2. Возможно, вы передаете ссылку Object Literal в аргументе атрибутов, затем другой код изменит объект в конечном итоге, и операция набора файлов cookie будет запущена впоследствии с другим Путем.
  3. Другой файл cookie устанавливается на сервере с различными атрибутами, поэтому при попытке установить на клиенте он дублирует.
  4. Некоторые коды меняют поведение методов Cookies во время выполнения, а затем, когда вы вызываете Cookies.set(), это дублирует файл cookie.

Помимо этих вариантов, я не могу придумать другую причину этого.

Я рекомендую вам следовать this guide, он рассказывает вам, как уменьшить код, чтобы сузить проблему.

У нас есть планы write some docs about duplicated cookies. В той же ссылке вы можете найти связанные темы, которые могут помочь вам решить проблему.

Надеюсь, это поможет.

Смежные вопросы