无法在 nodejs 中使用 cookie-parser 读取 cookie

Posted

技术标签:

【中文标题】无法在 nodejs 中使用 cookie-parser 读取 cookie【英文标题】:Cannot read cookies with cookie-parser in nodejs 【发布时间】: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

【问题讨论】:

你用的是快递吗? 是的,我确实使用快递 【参考方案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 应用程序的路径。

以上是关于无法在 nodejs 中使用 cookie-parser 读取 cookie的主要内容,如果未能解决你的问题,请参考以下文章

无法使用nodejs在telnet登录中输入密码

无法在 nodejs 中使用 cookie-parser 读取 cookie

无法在 docker 中调试 nodejs 应用程序

TypeError:无法使用nodejs在mongodb中读取null的属性“项目”

fs.readFile 无法在 nodejs 中使用 ffmpeg 读取缩略图生成的文件

无法在 nodeJS 中对用户进行身份验证:TypeError:无法使用“in”运算符在 fs 中搜索“用户名”