**node.js服务端设置cookie,设置成功却拿不到设置的cookie数据(cookie-parser)**
router.get('/login', function (req, res) {
res.cookie("USER_ID", "abc", {
// domain: "*", // 设置生效域名/
httpOnly: true, // 只运行Http访问
maxAge: 1000 * 60 * 60 * 2, // 2个小时过期
});
res.send({
success: true,
info: "登录成功",
});
})
router.get('/logout', function (req, res) {
res.cookie("USER_ID", "abc", {
// domain: "*",
maxAge: -1, // 过期
httpOnly: true,
});
res.send({
success: true,
info: "登出成功",
});
})
router.get('/test', async function (req, res) {
console.log(req.cookies,'c');
if (req.cookies.USER_ID) {
res.send({
success: true,
info: `用户【${req.cookies.USER_ID}】已登录`,
cookie: req.cookies.USER_ID,
});
} else {
res.send({
success: false,
info: "用户未登录",
});
}
})
测试了正常的
清理下浏览器缓存,包括cookie,然后再访问试试
或者试试下面的代码
const express = require("express");
const app = express();
var cookieParser = require('cookie-parser');
app.use(cookieParser());
app.get('/login', function (req, res) {
res.cookie("USER_ID", "abc", {
// domain: "*", // 设置生效域名/
httpOnly: true, // 只运行Http访问
maxAge: 1000 * 60 * 60 * 2, // 2个小时过期
});
res.send({
success: true,
info: "登录成功",
});
});
app.get('/logout', function (req, res) {
res.cookie("USER_ID", "abc", {
// domain: "*",
maxAge: -1, // 过期
httpOnly: true,
});
res.send({
success: true,
info: "登出成功",
});
});
app.get('/test', async function (req, res) {
console.log(req.cookies, 'c');
if (req.cookies.USER_ID) {
res.send({
success: true,
info: `用户【${req.cookies.USER_ID}】已登录`,
cookie: req.cookies.USER_ID,
});
} else {
res.send({
success: false,
info: "用户未登录",
});
}
});
app.listen(3000, function () {
console.log("server start at localhost:3000");
})
参考:
import Cookies from 'js-cookie'
const TokenKey = 'token'
export function getToken() {
return Cookies.get(TokenKey)
}
export function setToken(token) {
return Cookies.set(TokenKey, token)
}
export function removeToken() {
return Cookies.remove(TokenKey)
}
我是将路由分离到一个单独的文件进行处理的,刚刚试过了只有在login这个路由下才能访问到设置的cookie