什么会阻止 AngularJS $cookies 写入 cookie?

What would prevent AngularJS $cookies from writing a cookie?

我正在尝试使用 AngularJS v1.5.x $cookies 服务编写一个简单的 cookie。依赖关系都是正确的,因为我可以读取 cookie。但是,写入和编辑都不起作用。

例如:

var blah = $cookies.get('mysite_auth');
console.log('old: ' + blah);

$cookies.put('mysite_auth', 'blech');

blah = $cookies.get('mysite_auth');
console.log('new: ' + blah);

...导致以下输出:

old: ZmVhZDE ... =
new: ZmVhZDE ... =

没有抛出任何错误。尝试写入新 cookie 时也会发生同样的情况:

$cookies.put('someCookie', 'yup');

我可以像这样在我的控制器中写一个 cookie:

document.cookie = 'TEST=TESTVALUE';

这可能是什么原因?

您试过设置 cookie 的过期时间吗?

例如

var dDate = new $window.Date(),
var dExp = new $window.Date(dDate.getFullYear(), dDate.getMonth()+1, dDate.getDate());

$cookies.put('someCookie','yup', {expires: dExp});

var cCookie = $cookies.get('someCookie');
console.log(cCookie);

刚刚发现一个可能有用的 cookie 线程:How to set expiration date for cookie in AngularJS

事实证明 Angular $cookies 正在写入 cookie,但我们遇到了 domain/path 问题。因为我们的 Angular 应用程序位于我们的后端应用程序目录之外,所以页面 URL 与服务器路径不匹配。如果我访问了实际路径,而页面没有正确加载,则 cookie 存在。

我们解决了此 domain/path 配置的问题:

$cookies.put('myCookie', true, {
    domain: '.mydomain.com',
    path: currentUrl,
    expires: exp
});