You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地React前端请求NodeJS API登录后浏览器无法保存Cookie的问题求助

本地React前端请求NodeJS API登录后浏览器无法保存Cookie的问题求助

我现在在做一个全栈应用,后端用Node+Express开发,部署在AWS EC2实例上,搭配Nginx和pm2运行,连接着AWS上的数据库。用Postman测试时一切正常:发送POST /signin请求,传入email和password就能拿到认证Cookie,后续请求GET /subscriptions也能返回200 OK。

现在我要把前端跑起来,前端是用Vite搭建的React项目,还在localhost环境,用React Query和Axios与后端交互。

但我卡在了一个问题上:后端明明返回了Cookie,浏览器就是死活不保存。我已经试了各种办法:

  • 换Firefox和Chrome浏览器测试
  • 用127.0.0.1代替localhost访问前端
  • 在hosts文件里把自定义域名app.something.something映射到127.0.0.1,用这个域名访问
  • 换成本地运行的后端(而非AWS上的版本)测试
  • 反复调整服务器上Nginx的响应头配置
  • 给后端加了cors包来设置请求头(因为同时开Nginx和CORS会导致重复头,所以我把Nginx的相关配置删了)
  • 把Cookie的所有安全选项都关掉(Secure、sameSite、httpOnly)

这些尝试都没用,我实在没辙了,谷歌和Copilot也找不到新的解决方向。再说一遍,Postman里完全正常,所以我觉得后端没问题,应该是浏览器本地环境的CORS或者请求头相关的什么东西在搞鬼...

下面是我的相关代码配置:

后端服务器配置

import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
import express from "express";
import morgan from "morgan";
import cors from "cors";
import cookieParser from "cookie-parser";

import router from "./router";
import { createNewUser, signIn } from "./handlers/users";
import { protect } from "./modules/auth";

const app = express();

const corsOptions = {
  origin: "http://localhost:5173", // 我试过改成当前访问localhost的各种地址
  credentials: true,
};

app.use(cookieParser());
app.use(cors(corsOptions));

登录成功后设置Cookie的代码

const token = createJWT(user);

  res.cookie("token", token, {
    httpOnly: true,
    secure: false,
    sameSite: "None",
  });

  res.json("Authentication success");

前端Axios配置

export const authApi = axios.create({
  baseURL: API_URL,
  withCredentials: true,
});

authApi.defaults.headers.common["Content-Type"] = "application/json";

export const loginUser = async (user: LoginInput) => {
  const response = await authApi.post<ILoginResponse>("/signin", user);
  return response.data;
};

现在的情况是,Firefox里能看到响应里带着Cookie,但去Storage > Cookies里看是空的,后续请求也不会带上这个Cookie,结果就是一堆401错误。我也检查了POST /signin的请求头和响应头,能确认Cookie在响应里,但就是存不进去。

真的求帮忙,我已经卡了两天了,完全不知道还有什么能试的。

备注:内容来源于stack exchange,提问作者Lazar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 09:54:31