如何避免重复的cookie

时间:2016-07-14 15:17:51

标签: javascript jquery cookies

在我的应用程序中,我使用jQuery Cookie Plugin v1.4.1(https://github.com/carhartl/jquery-cookie)设置了一个cookie,如下所示:

$.removeCookie("Test_Cookie");
$.cookie("Test_Cookie", "xxx");

我希望这个cookie只存在一次,但在某些情况下,cookie存在两次。

这怎么可能,以及确保某个cookie只存在一次的最佳做法是什么?

2 个答案:

答案 0 :(得分:0)

您可以使用df <- data.frame(matrix(1:9, 3, 3)) df #> X1 X2 X3 #>1 1 4 7 #>2 2 5 8 #>3 3 6 9 for(i in 1:5){ df[, ncol(df) + 1] <- rnorm(nrow(df)) names(df)[ncol(df)] <- paste0("mean_", i) } df #> X1 X2 X3 mean_1 mean_2 mean_3 mean_4 mean_5 #>1 1 4 7 -1.9983501 -1.6810377 1.2893602 0.5342042 -0.8354363 #>2 2 5 8 0.5966507 -0.5628999 1.2953387 -0.6661931 -0.4685747 #>3 3 6 9 -0.4268952 -2.0069306 0.6390317 -0.3505088 0.1230753 String.prototype.split()转换为键值字符串数组(document.cookie),然后您可以迭代它们,拆分它们,如果键是价值,休息。请参阅下面的示例:

key=value

}

答案 1 :(得分:0)

获取重复 cookie 的一种方法是在 company.com 上有一个页面,在 dev.company.com 上有另一个页面。然后对 dev.company.com 的请求将获得域 .company.com 和 .dev.company.com 的 cookie。来自 dev.company.com 的 HTTP 响应永远无法更改浏览器为 company.com 存储的 cookie。这意味着您无法使用来自开发人员的 HTTP 响应“清除”所有重复的 cookie。

这可能令人沮丧,因为处理 cookie 的库通常只会为一个键返回一个 cookie。有效的 HTTP cookie 标头是“Cookie: zyx=data1; zyx=data2”,那么您的库将只返回其中一个,可能是第一个。

对此的常见解决方案是为不同的域使用不同的 cookie 密钥:“Cookie:dev.company.com-xyz=data1; company.com-xyz=data2”

另一种解决方案是获取 HTTP Cookie 标头,在处理多个 cookie 时对其进行解析并使用第一个有效的。就像使用有效的身份验证或有效的 JWT。