gpt4 book ai didi

angularjs - 无法访问 angular.js $cookies 对象

转载 作者:行者123 更新时间:2023-12-02 01:03:16 25 4
gpt4 key购买 nike

我正在使用 angular.js 和 csrf(跨站请求伪造)。

我已经添加了 Angular cookie 文件。

script src="angular-cookies.js"

然后,将其加载到应用程序中:

angular.module('myApp', ['ngCookies']);

在 $http 服务的 header 中添加 CSRF token 非常容易。我们只需要将它配置到应用程序的运行进程中,需要$cookie和$http服务即可。

  .run(function ($http, $cookies) {
$http.defaults.headers.post['x-csrf-token'] = $cookies._csrf;
});

在浏览器调试控制台中,我可以找到 cookie 存在。然而,当页面加载时,$cookies 输出未定义,奇怪的是 $cookies 对象本身是未定义的,但显然我已经加载了 cookie.js 并将模块注入(inject)到应用程序中

这是在 node.js 服务器端,我如何在 cookie 上设置 CSRF token

  app.use(require('csurf')()); 
app.use(function(req, res, next){
res.locals.token = req.csrfToken();
res.cookie('XSRF_TOKEN', req.csrfToken(),{ maxAge: 900000, httpOnly: false });
next();
});

谢谢提醒,我改了

  res.cookie('XSRF_TOKEN', req.csrfToken(),{ maxAge: 900000 });

  res.cookie('XSRF_TOKEN', req.csrfToken(),{ maxAge: 900000, httpOnly: false });

因此可以从浏览器读取 cookie。

最佳答案

根据 angularJS documentation

Your server needs to set a token in a JavaScript readable session cookie called XSRF-TOKEN on the first HTTP GET request.

此 cookie 必须可以用 Javascript 读取,最好与 index.html 页面一起发送。

完成后,您应该会在浏览器中看到它(选项/cookie ...)

此时,您应该在 Angular 代码中访问它。

如果不是这种情况,您是否应该尝试使用纯 Javascript 访问它

_getCookie = function(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++){
var c = ca[i].trim();
if (c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return "";
};

getCookie("XRSF_TOKEN");

关于angularjs - 无法访问 angular.js $cookies 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25744216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com