什么会阻止AngularJS $ cookies写入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);
...结果在下面的输出:
老:ZmVhZDE ... =
新:ZmVhZDE ... =
没有错误引发。
$cookies.put('someCookie', 'yup');
我可以写一个cookie在我的控制器像这样:
document.cookie = 'TEST=TESTVALUE';
什么可能是这个原因试图写入一个新的Cookie时,同样会发生?
答
事实证明,角$饼干在写的cookie,但我们有一个域/路径问题。由于我们的Angular应用程序存在于我们的后端应用程序目录之外,因此页面URL与服务器路径不匹配。如果我访问了实际的路径,而页面没有正确加载,那么cookie就存在了。
我们解决了这个域名/路径配置问题:
$cookies.put('myCookie', true, {
domain: '.mydomain.com',
path: currentUrl,
expires: exp
});
答
您是否尝试过为您的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
+0
我有。我将其删除以简化故障排除。该属性不是必需的。 – isherwood
它可能会在旧版本的IE失败。你在尝试什么浏览器? Chrome最新稳定版 – austin
。 – isherwood
你有没有试过$ cookieStore.put把值? – Don