2015-10-08 70 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,并且不要再次捕捉问题。但我认为这是错误的用法。

与名'my-cookie-name'套饼干只在一个地方的代码。 这个问题我抓住我的开发机器,所以它不能是一个旧的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

Cookie是其领域,路径和安全属性进行定义的,你需要格外小心,避免重复。

但为什么会发生这种情况?很难说,但这是我的理论:

  1. 即使您只调用一次,用户可能已经在本地有一个cookie。更改代码不会删除先前保存的cookie。
  2. 你可能会传递属性参数对象文本引用,那么另一个代码更改对象最终和Cookie集操作是不同的路径之后运行。
  3. 另一个cookie正在服务器中设置为不同的属性,因此当您尝试在客户端中设置时,它会重复。
  4. 一些代码改变在运行时Cookies方法,然后当你调用Cookies.set()它复制的cookie的行为。

除此之外我想不出其他原因发生这些选项。

我建议您按照this guide,它会告诉您如何减少代码以缩小问题范围。

我们计划write some docs about duplicated cookies。在同一链接中,您可以找到可帮助您解决问题的相关主题。

我希望它有帮助。

相关问题