iOS (Safari) 上未设置令牌 Cookie - Vite + React 客户端、Express.js 服务器

问题描述 投票:0回答:1

我开发了一个应用程序,客户端使用 Vite + React,服务器端使用 Express.js。登录功能可在计算机和 Android 设备上无缝运行。但是,我在 iOS 上尝试从 Safari 登录时遇到了问题。经过彻底测试,验证登录状态时似乎未设置令牌 cookie(仅在 iOS 中)。

验证用户名和密码后我会这样做

const token = createAccessToken(user);
  res.cookie("token", token, {
    maxAge: 315360000,
    sameSite: "None",
    secure: true,
  });
  return res.status(200).json(user);

然后为了验证服务器上的令牌,我这样做

validateToken(token)
  .then((user) => {
    return res.status(200).json(user);
  })
  .catch(() => {
    return res.status(401).json({ message: "Token invalido o expirado" });
  });

最后,我的 CORS 选项

const corsOptions = {
  origin: [
    "http://localhost:5173",
    "https://some_url.vercel.app",
    "http://192.mi_ip:19006",
  ],
  methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
  credentials: true,
  optionsSuccessStatus: 204,
};

服务器始终返回 401 错误,经过大量测试,很明显令牌不存在。值得注意的是,该应用程序在其他平台上可以完美运行。

客户端托管在 Vercel 上,服务器托管在 Fly.io 上。我在 iOS (Safari) 上特别遇到了这个问题。

任何有关为何无法在 iOS 上设置令牌 cookie 的见解或建议将不胜感激。谢谢!

javascript ios reactjs authentication cookies
1个回答
0
投票

你发现问题了吗?

© www.soinside.com 2019 - 2024. All rights reserved.