req.cookies 为空,我不知道为什么

req.cookies is null and I don't know why

我看过一些以前的堆栈溢出帖子,但无法弄清楚为什么会这样。

我在我的所有路由之前都包含了 cookie 解析器,并且 cookie 在浏览器中。出于某种原因,我无法访问它。

const cookieParser = require("cookie-parser");
const cors = require("cors");
const AppError = require("./utils/appError");
const globalErrorHandler = require("./controllers/errorController");
const dishRouter = require("./routes/dishRoutes");
const userRouter = require("./routes/userRoutes");
const orderRouter = require("./routes/orderRoutes");
const imageRouter = require("./routes/imageRouter");

const app = express();
app.use(cookieParser());

app.enable("trust proxy");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
app.options("*", cors()); 

路线...

这是我访问 req.cookies

的方式

首先我调用了 axios

axios({
      method: "patch",
      url: `http://localhost:8080/api/v1/users/me`,
      data: this.state,
    })

然后通过这个中间件

router
  .route("/me")
  .patch(authController.protect, userController.updateProfile)

在 authController.protect 中,我执行以下操作

try {
    //1) Getting token and check if it exists.
    let token;
    if (
      //POSTMAN
      req.headers.authorization &&
      req.headers.authorization.startsWith("Bearer")
    ) {
      token = req.headers.authorization.split(" ")[1];
    } else if (req.cookies.jwt) {
      token = req.cookies.jwt;
    }
    console.log(`TOKEN: ${token}`);
    console.log(req.cookies);

上面的 console.log 给出了 null。

我的代码遇到了类似的问题,我在检查 req.cookies 时得到了 null。我为我的 node.js 文件使用了 express,并遵循了以下链接的解释:

所以从服务器端我将配置添加到 cors() 并设置 credentials: true 并且在客户端从我的 fetch() 请求我添加了 credentials: 'include' 这让我可以访问我浏览器上的 cookie。我的 fetch() 请求使用了 PUT 方法。