En mi aplicación, necesito configurar una cookie usando el framework express. He probado el siguiente código pero no está configurando la cookie.
¿Alguien puede ayudarme a hacer esto?
var express = require('express'), http = require('http');
var app = express();
app.configure(function(){
app.use(express.cookieParser());
app.use(express.static(__dirname + '/public'));
app.use(function (req, res) {
var randomNumber=Math.random().toString();
randomNumber=randomNumber.substring(2,randomNumber.length);
res.cookie('cokkieName',randomNumber, { maxAge: 900000, httpOnly: true })
console.log('cookie have created successfully');
});
});
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(5555);
Respuestas:
El orden en el que usa el middleware en Express es importante: el middleware declarado anteriormente se llamará primero, y si puede manejar una solicitud, cualquier middleware declarado más tarde no se llamará.
Si
express.static
está manejando la solicitud, debe mover su middleware hacia arriba:Además, las necesidades de middleware a cualquiera extremo una petición (mediante el envío de una respuesta de vuelta), o pasar la solicitud a la siguiente middleware. En este caso, he hecho esto último llamando
next()
cuando se ha configurado la cookie.Actualizar
A partir de ahora, el analizador de cookies es un paquete npm separado, por lo que en lugar de usar
necesita instalarlo por separado usando
npm i cookie-parser
y luego usarlo como:fuente
express.static
, que los manejará después de su middleware. Entonces, para cada archivo JS o CSS, se llamará al código.Manifestación
fuente
No respondí exactamente su pregunta, pero me encontré con su pregunta, mientras buscaba una respuesta a un problema que tenía. Quizás ayude a alguien más.
Mi problema fue que las cookies se configuraron en la respuesta del servidor, pero el navegador no las guardó.
La respuesta del servidor regresó con el conjunto de cookies:
Así es como lo resolví.
Solía
fetch
en el código del lado del cliente. Si no especificacredentials: 'include'
en lasfetch
opciones, las cookies no se envían al servidor ni se guardan en el navegador, a pesar de que la respuesta del servidor las establece.Ejemplo:
Espero que esto ayude a alguien.
fuente
Establecer una cookie:
https://expressjs.com/en/4x/api.html#res.cookie
Leer una cookie:
(utilizando middleware de cookie-parser )
https://expressjs.com/en/4x/api.html#req.cookies
fuente