You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS中$cookies.put方法无法正常使用问题排查

解决AngularJS中$cookies.put无法设置Cookie的问题

我帮你排查下问题所在,你的代码里有两个核心问题导致Cookie设置失败,咱们一步步来修复:

1. 依赖注入不匹配

你在控制器的$inject数组里只声明了['QuizData', 'quizMetrics', '$http', '$filter'],但函数参数里却包含了$cookies、$window、$cookieStore这几个额外的服务。AngularJS的依赖注入严格要求数组顺序和函数参数顺序完全一致,不匹配的话会导致这些服务无法被正确注入,$cookies会变成undefined,自然调用put方法没效果。

2. 未引入ngCookies模块

$cookies服务属于AngularJS的ngCookies模块,默认是不会加载的,你需要在定义应用模块时显式注入这个依赖,否则Angular根本找不到$cookies服务。

修正后的完整代码

// 第一步:注入ngCookies模块
var app = angular.module('allianze', ['ngCookies']);

app.controller('quizctrl', QuizCtrl);

// 第二步:把所有用到的服务添加到$inject数组,顺序和函数参数严格对应
QuizCtrl.$inject = ['QuizData', 'quizMetrics', '$http', '$filter', '$cookies', '$window', '$cookieStore'];

function QuizCtrl(QuizData, quizMetrics, $http, $filter, $cookies, $window, $cookieStore) {
  var now = new Date(), 
      exp = new Date(now.getFullYear(), now.getMonth() + 6, now.getDate());
  
  // 可选:如果Cookie在站点内某些路径无法访问,可以添加path参数
  $cookies.put('quiztaken', 'yes', { expires: exp, path: '/' });
}

验证Cookie是否设置成功

修改完代码后,你可以打开浏览器开发者工具(F12):

  • Chrome:切换到「Application」标签,在左侧菜单找到「Cookies」,查看对应域名下是否有quiztaken这个Cookie
  • Firefox:切换到「Storage」标签,同样查看「Cookies」项

如果还是没生效,检查下浏览器是否禁用了Cookie,或者确认你的Cookie过期时间设置是否合理(比如不要设置过去的时间)。

内容的提问来源于stack exchange,提问作者Mohammad Sumon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:50:24