【问题标题】:Cannot read cookies with cookie-parser in nodejs无法在 nodejs 中使用 cookie-parser 读取 cookie
【发布时间】:2018-03-05 16:00:07
【问题描述】:

我的项目中有一个 angularjs 前端和 nodejs 后端。在角度代码中,我使用 $cookies 对象设置了一个 cookie,它工作正常,因为我可以在浏览器左上角的“显示页面信息”中找到 cookie。但是,当我向后端发送获取请求时,我无法在那里读取该 cookie。我的 server.js 中有这些行:const cookieParser = require('cookie-parser'); 和后来的app.use(cookieParser());。 然后我尝试这样做:

//custom passport jwt extraction function
var cookieExtractor = function (req) {

    console.log(req.cookies); //logs a '{}'

    var token = null;
    if(req && req.cookies)
    token = req.cookies['jwt'];
    return token;
};

这里出现了问题,因为 cookie 对象是空的(我在控制台中得到了“{}”)。我在这里做错了什么?

编辑:

我附上了我的应用程序设置的浏览器 cookie(对不起,非英语语言):cookies

【问题讨论】:

  • 你用的是快递吗?
  • 是的,我确实使用快递

标签: javascript angularjs node.js cookies jwt


【解决方案1】:

试试这样:

如果您想将 cookie 设置为字符串,请使用 put 方法。

如果你想设置一个 cookie 作为对象,请使用 putObject 方法。

Angularjs

angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) {
  var obj = {};
  obj.name = "Hello world";
  $cookies.putObject('myCookie', obj);
}]);

nodejs

var cookieParser = require('cookie-parser');
module.exports = function(app) {
    app.use(cookieParser());
}

console.log('cookie', req.cookies.myCookie);

【讨论】:

  • 我仍然无法访问服务器端的 cookie。 req.cookies.myCookie 未定义。
  • 请验证 cookie 是否存在于您的浏览器应用程序中
  • 正如我之前所说。 cookie 存在于浏览器中。我只是无法在 nodejs 中访问它们(我可以在角度 tho 中)。设置为“/ auth”的cookies路径可能在这里有问题吗?这是我设置 Angular 应用程序的路径。
猜你喜欢
  • 1970-01-01
  • 2018-07-20
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
相关资源
最近更新 更多