什么会阻止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时,同样会发生?

+0

它可能会在旧版本的IE失败。你在尝试什么浏览器? Chrome最新稳定版 – austin

+0

。 – isherwood

+0

你有没有试过$ cookieStore.put把值? – Don

事实证明,角$饼干在写的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