【发布时间】:2016-06-20 23:26:18
【问题描述】:
$cookies 在 angularjs 中无法正常工作。在单页应用程序中使用$cookies 来存储真/假(存储为字符串)。
上一版本:
我写的代码
$cookies.put('displayUsers', $scope.somevalue, {expires:somedatetimevalue});
这工作正常,但几个月后,cookie 无法正常工作。
在调查中(在 chrome 中),我发现为同一个域创建了两个名称相同的 cookie displayUsers,但路径不同。第一个路径是 /demo/project1,另一个是 /project1。 url /demo 不是应用程序的一部分,这样的 url 将重定向到完全不同的应用程序。
每次调用上述$cookies.put() 方法时,它都不会使用路径/demo/project1 更新cookie。因此它的值总是假的。
为了解决这个问题,我制作了特定的 cookie 存储部分路径,它在 chrome 中可以正常工作,但在 IE 中却不行。
新版本:
$cookies.put('displayUsers', $scope.somevalue, {expires:somedatetimevalueinyears, path:'/demo/project1'});
我也尝试在保存之前删除cookie,然后它在ie中也不起作用。
我在控制台中检查了 cookie 值,但使用 document.cookie stmt 的 displayUsers cookie 总是错误的。
如果我清除浏览器数据和 cookie 然后尝试,它在 IE 中运行良好,直到现在(不确定一致性)。
如果我们不清除 IE 中的历史记录,失败的可能性是什么?
另外我想知道 cookie 在这两种情况下(无论是否指定路径)在 IE 中的行为。
【问题讨论】:
-
您是否将
ngCookies包含为依赖项? -
是的,这一切都包括在内。这个问题是在将近 6 个月后出现的。为了解决这个问题,我开始使用特定路径存储 cookie。但现在它在 ie 中不起作用。我必须清除历史才能使其在 ie 中工作
-
你为什么使用 1.4 和 1.5?有什么特别的原因吗?你试过1.5看看还是不行吗?
-
版本有什么关系。在 1.4.3v 中报告了与 cookie 相关的任何问题。我尝试实现纯 javascript 仍然存在 IE 中的问题。