无法获取 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。但是一旦我试图拿到饼干,
它显示“cartName”未定义。
获取 Cookie 代码:
router.get("/getCartFromCookie", function (req, res) {
res.send(req.cookies["cartName"]);
console.log(req.cookies);
});
我试过控制台记录 cookie,但它也显示未定义。
据我所知,处理 cookie 的优化方法是使用 cookie-parser
对 express 的依赖。
$ npm install cookie-parser
然后您可以使用 req.cookies
或 req.signedCookies
属性 轻松获取您的 cookie,如下所示:
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);
参考文献:
您没有显示所有代码,但我假设您正在使用 cookie-parser middleware 直接访问请求对象上的 cookie。如果没有,请从添加 cookie-parser 开始。
关于您的 cookie 读取问题,请注意您不能在同一个请求中发送和读取 cookie。您需要一个请求来设置 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}`)
})
我设置了一个 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。但是一旦我试图拿到饼干, 它显示“cartName”未定义。
获取 Cookie 代码:
router.get("/getCartFromCookie", function (req, res) {
res.send(req.cookies["cartName"]);
console.log(req.cookies);
});
我试过控制台记录 cookie,但它也显示未定义。
据我所知,处理 cookie 的优化方法是使用 cookie-parser
对 express 的依赖。
$ npm install cookie-parser
然后您可以使用 req.cookies
或 req.signedCookies
属性 轻松获取您的 cookie,如下所示:
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);
参考文献:
您没有显示所有代码,但我假设您正在使用 cookie-parser middleware 直接访问请求对象上的 cookie。如果没有,请从添加 cookie-parser 开始。
关于您的 cookie 读取问题,请注意您不能在同一个请求中发送和读取 cookie。您需要一个请求来设置 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}`)
})