请求 cookies undefined express

req cookies undefined express

我不明白为什么 req cookie 在 expressJS 中总是未定义。这是我的代码:

const accessToken = jwt.sign({id:user._id}, process.env.JWT_TOKEN_SECRET)
console.log(accessToken)
res.cookie('authcookie',accessToken)
console.log(req.cookies.authcookie)

这里是 server.js 代码:

const express = require("express");
const app = express();
const morgan = require('morgan');
const bodyParser = require("body-parser");
const cors =  require("cors");
const dotenv = require('dotenv');
const cookieParser = require('cookie-parser');
const path = require('path');
const userRoute = require('./routes/user')
dotenv.config()

const port = process.env.PORT || 5000

app.use(cors());

app.use(cookieParser())
app.use(morgan('dev'))


app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:false}))

app.use('/api', userRoute)

我哪里做错了?非常感谢,非常感谢任何帮助。谢谢

这是一个工作示例:

server.js:

const express = require('express');
const app = express();
const morgan = require('morgan');
const bodyParser = require('body-parser');
const cors = require('cors');

const cookieParser = require('cookie-parser');
const jwt = require('jsonwebtoken');

process.env.JWT_TOKEN_SECRET = 'secret';
const port = process.env.PORT || 5000;

app.use(cors());

app.use(cookieParser());
app.use(morgan('dev'));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.get('/auth', (req, res) => {
  const user = { _id: '123' };
  const accessToken = jwt.sign({ id: user._id }, process.env.JWT_TOKEN_SECRET);
  res.cookie('authcookie', accessToken);
  res.sendStatus(200);
});

app.get('/api', (req, res) => {
  console.log(req.cookies);
  jwt.verify(req.cookies.authcookie, process.env.JWT_TOKEN_SECRET, (err, decoded) => {
    if (err) {
      console.log(err);
      res.sendStatus(500);
      return;
    }
    console.log('decoded jwt: ', decoded);
    res.sendStatus(200);
  });
});

app.listen(port, () => console.log(`HTTP server is listening on http://localhost:${port}`));

使用 http://localhost:5000/auth URL 打开浏览器以获取 authcookie cookie。然后访问http://localhost:5000/api URL调用api.

控制台输出:

HTTP server is listening on http://localhost:5000
GET /aut 404 2.095 ms - 142
GET /auth 200 4.047 ms - 2
{
  authcookie: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEyMyIsImlhdCI6MTYxODgxODMyM30.mwCmW2NKSE9Youppnq_SCft7snYSp1Ud7nTThi7Q6Os'
}
decoded jwt:  { id: '123', iat: 1618818323 }
GET /api 200 3.856 ms - 2