首页 > 解决方案 > 我从 Postman 那里得到 cookie,但在 Chrome 上没有

问题描述

我正在尝试设置一个名称为 的 cookie auth,包括使用 jwt 签名的用户 ID。当我点击时,我并没有真正看到authChrome 上的 cookie,http://localhost:5000/我只看到这两个;

铬合金

但问题是,当我使用Postman到达相同的路线时,我会auth在控制台中获得 cookie。顺便说一句,我用req.cookies

还有我的server.js

import express from 'express';
import dotenv from 'dotenv';
import connectDB from './utils/db.js';
import { notFound, errorHandler } from './middleware/errorMiddleware.js';
const app = express();
dotenv.config();
import cookieParser from 'cookie-parser';
import userRoutes from './routes/userRoutes.js';
import cors from 'cors';

app.use(cors());

connectDB();
app.use(cookieParser());
app.use(express.json());

app.get('/', (req, res) => {
  res.send('hi');
  console.log(req.cookies);
});

app.use('/api/users', userRoutes);

app.use(notFound);
app.use(errorHandler);

const PORT = process.env.PORT || 5000;

app.listen(PORT, () => console.log('Server is listening on PORT 5000'));

这是我register第一次设置cookie的函数;

// desc     Register User
// route    /api/users/register
// access   Public
const register = asyncHandler(async (req, res) => {
  let { name, email, password } = req.body;

  const isUserExists = await User.findOne({ email });
  if (isUserExists) {
    res.status(400);
    throw new Error('Invalid e-mail or password');
  }

  const salt = await bcrypt.genSalt(10);
  password = await bcrypt.hash(password, salt);

  const user = await User.create({
    name,
    email,
    password,
  });

  const token = generateToken(user._id);
  res.cookie('auth', token, {
    httpOnly: false,
    maxAge: 1000 * 60 * 60 * 24 * 3, // 3 dayss
  });

  res.status(201);

  res.json({
    _id: user._id,
    name: user.name,
    email: user.email,
    isAdmin: user.isAdmin,
  });
});

标签: javascriptnode.jsexpresscookies

解决方案


fetch您是否在客户端代码中使用API?尝试credentials: 'include',在那里使用。否则,cookie 将不会在您的浏览器中设置。

fetch('https://example.com', {
 ...
  credentials: 'include'
});

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#sending_a_request_with_credentials_included


推荐阅读