Angular JS - 设置$cookies域失败

5

我在我的AngularJS应用程序中设置cookie时遇到了一些问题。情况是,我想要设置一个在整个站点上都可用的cookie,但是我不知道如何使用AngularJS默认的$cookies对象设置所有cookie参数。

例如,在普通的JavaScript中,我会写下这段代码:

var exp = new Date();
exp.setTime(exp.getTime()+(24*60*60*1000)); // expires after a day
document.cookie = "myCookies=yes;expires="+exp.toGMTString()+ ";domain=.example.com;path=/";

但是由于DOM对象不能很容易地加载到我的应用程序中,所以我不得不使用$cookies(angular-cookies.js)。新代码如下:

angular.module('MyApp')
    .controller('MyCtrl', function ($scope, $filter, Slug,PUBLIC_ROUTES, $cookies) {
        var myCookies = $cookies['mycookies'];
        if (typeof myCookies == 'undefined' || typeof myCookies == undefined) {
            $cookies['mycookies'] = "yes";
        }
    });

但是我无法为$cookies设置过期日期、路径和域,因为这些信息不可用。

我该怎么办?


请看一下关于同一个问题的回答:https://dev59.com/0mcs5IYBdhLWcg3wu2Up#29033292 - dsuess
2个回答

17

如果你正在使用 Angular 1.4 及以上版本,只需在主应用程序模块的配置部分中设置 $cookiesProvider.defaults。示例:

angular.module('my-app', [ngCookies])
.config(['$cookiesProvider', function($cookiesProvider) {
    // Set $cookies defaults
    $cookiesProvider.defaults.path = '/';
    $cookiesProvider.defaults.secure = true;
    $cookiesProvider.defaults.expires = exp_date;
    $cookiesProvider.defaults.domain = my_domain;
}]);

刚开始时不要像我一样使用新对象来分配默认值:

$cookiesProvider.defaults = {path: '/', secure: true};

这将打破对象的引用,使默认值不再被覆盖。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接