30

I'm developing a website with node.js and express. How can I set a cookie value?

Conspicuous Compiler
  • 6,403
  • 1
  • 40
  • 52
Javier Manzano
  • 4,761
  • 16
  • 56
  • 86
  • Does this answer your question? [Get and Set a Single Cookie with Node.js HTTP Server](https://stackoverflow.com/questions/3393854/get-and-set-a-single-cookie-with-node-js-http-server) – Antoni Jul 06 '20 at 14:25

2 Answers2

43

As Express is built on Connect, you can use the cookieParser middleware and req.cookies to read and res.cookie() to write cookies:

// configuration
app.use(express.cookieParser());
// or  `express.cookieParser('secret')` for signed cookies

// routing
app.get('/foo', function (req, res) {
    res.cookie('bar', 'baz');
    // ...
});

app.get('/bar', function (req, res) {
    res.send(req.cookies.bar);
});

[Update]

As of Express 4.0, Connect will no longer be included with Express and the default middleware have been moved into their own packages, including cookie-parser.

Jonathan Lonowski
  • 121,453
  • 34
  • 200
  • 199
  • 2
    I have the same problem. When I replace app.use(express.cookieParser()); with app.use(require('connect').cookieParser()); There is Set-Cookie:currentId=b8RuviEVAytniu62; in Response Headers. But when I try to acces it with req.cookies.currentId i get undefined. – Sysrq147 May 01 '14 at 17:21
  • 2
    `cookie-parser` is not actually necessary for `res.cookie()` – grabantot Jul 12 '17 at 08:57
  • `cookie-parser` is necessary for `req.cookies.bar` else express will not be able to parse cookies passed by the browser. – Hunter Aug 02 '19 at 12:53
5

You could just use the response object that express provides to set your cookies.

You can find detailed information on how to do that at: http://expressjs.com/en/api.html#res.cookie

MT.
  • 1,915
  • 3
  • 16
  • 19
  • 2
    THIS!! Exactly this! My colleague spent so much time searching for "express session write cookie" that they just did not bother to go through Express's docs. – hjpotter92 Jan 13 '17 at 16:25