【问题标题】:AngularJS $cookies.get() always returns undefinedAngularJS $cookies.get() 总是返回 undefined
【发布时间】:2015-08-11 07:27:00
【问题描述】:

我正在使用 AngularJS 1.4.0 和 $cookies 服务。以下代码将始终打印出一个空对象:

(function() {
    var app = angular.module("user-cookies-service", []);

    app.service('UserCookiesService', ["$cookies", function($cookies) {
        $cookies.put("Hello", "World");
        console.log($cookies.getAll());
    }]);
})();

我试过了:

  • 使用 AngulerJS 1.3.15 和 $cookieStore,在刷新浏览器时 cookie 不会持续存在(但它至少创建了 cookie)。
  • 添加到期日期。
  • 确保在我的浏览器 (Chrome) 中启用了 Cookie。
  • 尝试普通的旧 JS,但仍然无法正常工作。

我无法在任何地方找到类似的问题。

谢谢。

【问题讨论】:

  • 控制台有错误吗?
  • 没有。它也不适用于普通的旧 JS。如果有影响,我的浏览器中会启用 Cookie。
  • 想通了,显然你必须启动带有特定标志的 chrome 以允许本地文件上的 cookie。我现在正在写一个答案。

标签: javascript angularjs cookies


【解决方案1】:

有点晚了,但对于任何有同样问题的人。我有一个类似的问题。您必须确保将正确的选项作为第三个参数传递。在我的情况下,路径没有被设置。 Angular 使用你的 <base> 标签来设置路径。如果由于某种原因不可用,它将不会设置 cookie。

试试这个

$cookies.put('secret', 'I cant tell you' {
   expires: new Date(date),
   path: '/'
});

【讨论】:

    【解决方案2】:

    也许刷新后cookie应该可用,尝试以相反的方式记录它

    console.log($cookies.getAll());
    $cookies.put("Hello", "World");
    

    第一次加载:{},第二次加载:{“Hello”:“World”}

    在 Angular 1.3 中,使用 $cookies.Hello = "world";设置cookie

    【讨论】:

    • 谢谢,但请看我自己的回答。我在弄乱 Chome 开发者的控制台时偶然发现了它。
    【解决方案3】:

    对于任何偶然发现这个问题的人......

    默认情况下,Chrome 不允许本地文件使用 cookie。您必须使用 --enable-file-cookies 标志运行它。

    确保 Chrome 已关闭并打开 Windows 命令提示符/终端并运行以下命令:

    <path-to-chrome>/chrome.exe --enable-file-cookies
    

    这将允许您在本地放置/获取 cookie。

    干杯!

    【讨论】:

      猜你喜欢
      • 2017-03-18
      • 2016-01-16
      • 1970-01-01
      • 2012-09-05
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 2018-08-19
      相关资源
      最近更新 更多