什么会阻止 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
});
我正在尝试使用 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
});