簡體   English   中英

無法獲取 cookie nodejs

[英]couldn't get the cookie nodejs

我設置了一個cookie,

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");
});

這完美地設置了一個名為“cartName”的cookie。 但是,一旦我嘗試獲取 cookie,它就會顯示“cartName”未定義。

獲取 Cookie 代碼:

router.get("/getCartFromCookie", function (req, res) {
  res.send(req.cookies["cartName"]);
  console.log(req.cookies);
});

我嘗試控制台記錄 cookies 但它也顯示未定義。

據我所知,處理 cookies 的優化方法是使用cookie-parser依賴來表達。

$ npm install cookie-parser

然后,您可以使用req.cookiesreq.signedCookies屬性輕松獲取 cookies,如下所示:

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);

參考:

  1. https://github.com/expressjs/cookie-parser
  2. http://expressjs.com/en/resources/middleware/cookie-parser.html

您沒有顯示所有代碼,但我假設您正在使用cookie-parser 中間件直接在請求 object 上訪問 cookies。 如果沒有,請從那里添加 cookie-parser 和 go 開始。

對於您的 cookie 讀取問題,請注意您無法在同一請求上發送和讀取 cookies。 您需要一個請求來設置 cookie,而另一個請求來讀取 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}`)
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM