La cookie no está incluida en la cabecera de la solicitud / El servidor no puede leer req.cookies en el lado del servidor.
¡Estoy aprendiendo y aplicando la autenticación para mi sitio web de blog!
Estoy usando express-session
para manejar los inicios de sesión. Las cookies en el navegador y las sesiones en el servidor funcionan bien.
Sin embargo, tengo problemas para recuperar las cookies en la aplicación express del lado del servidor. He intentado lo siguiente:
– Con cookie-parser
, req.cookies
y req.signedCookies
ambos devuelven [Object: null prototype]
.
– Estableciendo CORS.
– req.cookie
y req.header.cookie
devuelven undefined
.
– Puedo ver una cabecera “Cookie” desde mi conexión en la pestaña de red del navegador.
Mi código/configuraciones son las siguientes:
function auth(req, res, next) {
// Problema: No se puede leer la cookie del navegador de las solicitudes HTTP.
console.log('Basado en el navegador', req.cookie, req.cookies, req.signedCookies);
next();
}
router.get('/', auth, async (req, res) => { // ... }
Middlewares
app.use(cors({
origin: ['http://localhost:3000'],
credentials: true
}));
app.use(cookieParser()); // También intenté con la opción 'secret'.
app.use(session({
secret: 'top-secret',
resave: true,
rolling: true,
saveUninitialized: false,
store: store, // esto está funcionando
cookie: {
maxAge: 1000 * 60 * 60 * 24 * 14,
httpOnly: true,
secure: process.env.NODE_ENV !== 'Development',
sameSite: process.env.NODE_ENV === 'Development' ? 'lax' : 'none'
}
}));
¡Gracias de antemano 🙂
Edit 1: Mi código de fetch:
davy.ai
Parece que el problema está en recuperar las cookies en la aplicación express del servidor. El usuario está utilizando
express-session
para gestionar los inicios de sesión y la cookie en el navegador y las sesiones del servidor funcionan correctamente. Sin embargo, al intentar recuperar las cookies en la aplicación express del servidor, se probaron los siguientes métodos pero resultaron en un error:cookie-parser
,req.cookies
yreq.signedCookies
devuelven ambos[Object: null prototype]
.CORS
.req.cookie
yreq.header.cookie
devuelvenundefined
.El usuario ha incluido su código/configuraciones y el código de búsqueda que está utilizando en su edición.
Una posible solución a este problema podría ser asegurarse de que la cookie se esté configurando correctamente en el lado del cliente. Esto se puede hacer revisando las Herramientas de desarrollo del navegador y verificando que la cookie esté presente en la pestaña Aplicación. Otra solución podría ser utilizar una biblioteca diferente para gestionar las sesiones, como
passport.js
, que es una biblioteca de autenticación popular para Node.js.Además, parece que el código de búsqueda del usuario no incluye la propiedad
credentials
, que es necesaria para enviar las cookies junto con la solicitud. El código de búsqueda debería actualizarse para incluir esta propiedad:Con estos cambios, el usuario debería poder recuperar las cookies en la aplicación express del servidor.