首页 > 解决方案 > 为什么 Chrome 不在生产中设置 cookie

问题描述

我有一个正在生产的应用程序,有时会在 Chrome 中设置 cookie,有时不会。我在后端使用nodejs。这不会发生在 Firefox 中,只有 Chrome。难道我做错了什么?最近我加了

    this.app.use(cors({ origin: true, credentials: true }));

但它根本没有帮助。

设置cookie的代码:

exports.oauthLogin = async (req, res) => {
  if (!req.query.token) {
    return res.status(400).send({ error: "No token provided" });
  }

  const settings = await AppSettings.findOne();

  const response = await checkToken({
    token: req.query.token,
    serverUrl: settings.oauthServerUrl,
    clientId: settings.oauthClientId,
    clientSecret: settings.oauthClientSecret,
  });


  if (response.error) {
    return res.redirect("/");
  }

  const { _id, displayName, email } = response.user;

  let user = await User.findOne({ email: email });
  if (!user) {
    user = new User({
      displayName,
      email,
      oauthId: _id,
      accessLevel: "User",
    });
    await user.save();
  }

  const jwtUserData = {
    userId: user._id,
    userAccessLevel: user.accessLevel,
  };
  const token = jwt.sign(jwtUserData, process.env.JWT_SECRET);
  res.cookie("token", token);
  return res.redirect(req.query.redirectUrl ? req.query.redirectUrl : "/");
};

标签: node.jsgoogle-chrome

解决方案


推荐阅读