我在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没有被标记为安全,所以它就像选项(或最新的化身,默认值)没有被应用(我似乎不需要设置路径或域,他们得到无论如何设置).
有人可以指出任何一段代码中的错误吗?
有同样的问题,现在在这里找到解决方案.问题是,你不应该创建一个新对象(分配{...}给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)
| 归档时间: |
|
| 查看次数: |
2093 次 |
| 最近记录: |