Puse una galleta con,
router.get("/addCartToCookie", function(req, res) { let options = { maxAge: 1000 * 60 * 15, httpOnly: true, }; let cartData = { name: "test cookie", slug: slugify("test cookie"), productPictures: "K6B4dzGjN-teal.jpeg", price: 200, description: "testing cookies", quantity: 7, }; // Set cookie res.cookie("cartName", cartData, options); res.send("Cart Added to Cookie"); });Lo que establece perfectamente una cookie llamada "cartName". Pero una vez que trato de obtener la cookie, muestra que "cartName" no está definido.
Obtener código de cookies:
router.get("/getCartFromCookie", function (req, res) { res.send(req.cookies["cartName"]); console.log(req.cookies); });Probé consola registrando las cookies pero también muestra indefinido.
Por lo que sé, la forma optimizada de manejar las cookies es mediante el uso de la dependencia cookie-parser para express.
$ npm install cookie-parser Luego, podría obtener fácilmente sus cookies utilizando la propiedad req.cookies o req.signedCookies como se muestra a continuación:
var express = require('express') var cookieParser = require('cookie-parser') var app = express() app.use(cookieParser()) app.get('/', function (req, res) { // Cookies that have not been signed console.log('Cookies: ', req.cookies) // Cookies that have been signed console.log('Signed Cookies: ', req.signedCookies) // Your cart cookie console.log('Cookies: ', req.cookies.cartName) }) app.listen(8080);No muestra todo su código, pero asumo que está utilizando elmiddleware del analizador de cookies para acceder a las cookies directamente en el objeto de solicitud. Si no, comience agregando el analizador de cookies y continúe desde allí.
Para su problema de lectura de cookies, tenga en cuenta que no puede enviar y leer cookies en la misma solicitud. Necesita una solicitud para configurar la cookie y otra para leer la cookie.
import express from 'express'; import cookieParser from 'cookie-parser' import {inspect} from 'util'; const app = express(); const router = express.Router() router.use(cookieParser()) app.use(router); const port = 3000 router.get('/setcookie', (req, res) =>{ res.cookie('testCookie', 'magic content'); res.send("set the cookie"); }) router.get('/readCookie', (req, res) =>{ res.send('your cookies: ' + inspect(req.cookies['testCookie'])); console.log(req.cookies); }) app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`) })