es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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:

Código de fetch

Tags:  , , , ,

Answer

  1. Avatar for 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:

    • Con cookie-parser, req.cookies y req.signedCookies devuelven ambos [Object: null prototype].
    • Configurando CORS.
    • req.cookie y req.header.cookie devuelven undefined.

    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:

    fetch(url, {
      method: 'GET',
      credentials: 'include', // Se añadió esta línea
      headers: {
        'Content-Type': 'application/json'
      },
    })
    

    Con estos cambios, el usuario debería poder recuperar las cookies en la aplicación express del servidor.

Comments are closed.