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

部署Glitch后Set-Cookie无法设置Cookie求助(Node.js+React)

部署到Glitch后Cookie不生效的解决方案

问题重现

本地开发时登录/登出功能正常,部署到Glitch平台后,响应头中能看到Set-Cookie字段,但浏览器的Application→Cookie面板中没有对应的Cookie。

核心原因

跨域场景下,浏览器对Cookie的存储有严格安全限制,尤其是HTTPS环境中,必须满足Secure、SameSite=None等属性,同时CORS配置的Origin必须精确匹配。

修复步骤

1. 修正CORS的Origin配置

你的CORS配置中Origin末尾多了斜杠,会导致Origin匹配失败,浏览器拒绝存储Cookie。修改app.js中的CORS配置:

const cors = require('cors');
const cookieParser = require('cookie-parser');
const express = require('express'); // 补充缺失的express引入

const app = express();

app.use(
  cors({
    credentials: true,
    exposedHeaders: [
      'Set-Cookie',
      'Authorization',
      'Origin',
      'X-Requested-With',
      'Content-Type',
      'Accept',
    ],
    origin: 'https://assignment-artem-zakharchuk.vercel.app', // 去掉末尾的斜杠
  })
);
app.use(cookieParser());

2. 完善Cookie的安全属性

跨域HTTPS环境下,必须为Cookie添加secure: true和sameSite: 'None'属性,同时修正JWT的生成方式(jsonwebtoken库原生用jwt.sign而非自定义JWT类)。修改user.controller.js中的代码:

const jwt = require('jsonwebtoken');

async function httpLoginUser(req, res) {
  const { email } = req.body;
  
  const existUser = await checkIfUserExists(email);
  // 修正JWT生成逻辑:使用jsonwebtoken库的sign方法
  const token = jwt.sign(
    { user: existUser[0] },
    process.env.ACCESS_TOKEN_SECRET,
    { expiresIn: '14d' }
  );
  
  res.cookie('login', token, {
    maxAge: 1209600000, // 和JWT过期时间保持一致(14天)
    secure: true, // HTTPS环境必须开启,否则浏览器拒绝存储
    sameSite: 'None', // 跨域场景必须设置为None,配合Secure使用
    httpOnly: true, // 可选:防止XSS攻击,禁止前端JS直接访问Cookie
    path: '/' // 确保Cookie在全站路径下有效
  });
  res.status(201).json({ error: false, token: token });
}

3. 确认Glitch访问协议

确保前端请求的后端地址是Glitch提供的HTTPS域名,不要使用HTTP协议——Glitch默认支持HTTPS,直接使用平台分配的域名即可。

4. 验证前端请求配置

确认前端请求的credentials已设置为'include'(你的现有代码已正确配置),同时请求地址与Glitch后端域名完全匹配,无端口或协议不匹配问题。

验证方法

修复后重新部署,登录成功后:

  • 在浏览器开发者工具Network面板中,查看登录请求的响应头,确认Set-Cookie包含Secure; SameSite=None属性
  • 切换到Application→Cookies,查看对应域名下是否存在login Cookie

内容的提问来源于stack exchange,提问作者Artem Zakharchuk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:42:49