Angular 1.4.1 $ cookies最终成为会话cookie

Sco*_*own 2 cookies angularjs

我在Angular 1.4.1下设置持久性cookie时遇到问题.根据Chrome的资源检查,以及关闭浏览器和重新打开页面的更明显效果,Cookie总是会结束为会话cookie.

   $scope.HideSystemNotice = function() {
           // set expiry 1 yr in the future - well after System Notice expires
           var now = new Date(),
               exp = new Date(now.getFullYear()+1, now.getMonth(), now.getDate())
           $cookies.put(  'Snotice'+$scope.SystemNoticeInfo[0].snid, // cookiename
                          'dismissed',                               // value
                          { 'expires': exp }                         // expiry
                       );
           $scope.NextSystemNotice();
   };
Run Code Online (Sandbox Code Playgroud)

这与StackOverflow上其他地方提供的示例基本相同(但我缺少添加到那些convos的rep :(因此是单独的问题)

正在设置Cookie - 我可以在Chrome的资源视图中看到它们.但是,它们没有到期日期(Chrome将其显示为"会话").

在设定日期时我错过了哪些明显的花絮?谢谢.

编辑....

我在设定有效期限时仍然遇到问题.我现在已升级到Angular 1.4.7,并尝试在.config中使用$ cookiesProvider默认值而没有任何好处

app.config(function($cookiesProvider) {
 var n = new Date();
 $cookiesProvider.defaults = {
    path: '/',
    domain: location.hostname,
    secure: true,
    expires: new Date(n.getFullYear()+1, n.getMonth(), n.getDate())
 };
});
Run Code Online (Sandbox Code Playgroud)

然后在代码中进一步向下:

    $scope.HideSystemNotice = function() {
        $cookies.put('Snotice'+$scope.SystemNoticeInfo[0].snid, 'dismissed');
        $scope.NextSystemNotice();
    };
Run Code Online (Sandbox Code Playgroud)

我仍然只看到创建会话cookie.

路径和域是正确的,但cookie没有被标记为安全,所以它就像选项(或最新的化身,默认值)没有被应用(我似乎不需要设置路径或域,他们得到无论如何设置).

有人可以指出任何一段代码中的错误吗?

and*_*zep 5

有同样的问题,现在在这里找到解决方案.问题是,你不应该创建一个新对象(分配{...}defaults),而只需defaults像这样编辑对象的属性:

app.config(function($cookiesProvider) {
    var n = new Date();
    $cookiesProvider.defaults.path = '/';
    $cookiesProvider.defaults.domain = location.hostname;
    $cookiesProvider.defaults.secure = true;
    $cookiesProvider.defaults.expires = new Date(n.getFullYear()+1, n.getMonth(), n.getDate());
});
Run Code Online (Sandbox Code Playgroud)