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

设置SameSite无效,Google Auth会话Cookie被拦截求助

Google Auth会话Cookie被拦截问题排查求助

我的Google Auth会话Cookie被拦截,网络面板显示拦截状态。该问题已困扰三天,尝试在cookie-session配置中设置SameSite为'none'、secure为true,但无任何效果。

相关代码

Index.js 主文件

const cookieSession = require('cookie-session');
const cors = require('cors');
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const listingRoutes = require('./routes/listingRoutes');
const userRoutes = require('./routes/userRoutes');
const authRoutes = require('./routes/authRoutes');

const app = express();
const PORT = process.env.PORT;
const passport = require('passport')
const passportCfg = require('./passport')

app.use(cors({
  origin: [process.env.FRONTEND_URL, process.env.BACKEND_URL],
  methods: 'GET,POST,PUT,DELETE,PATCH',
  credentials: true
}));


app.use(cookieSession({
  name: 'session',
  keys: ['weerit'],
  maxAge: 24*60*60*1000,
  sameSite: 'none',
  secure: true
}));

app.use(passport.initialize());
app.use(passport.session());

app.use(bodyParser.json({ limit: '100mb' }));

// Routes
app.use('/auth', authRoutes);
app.use('/api/users', userRoutes);
app.use('/api/listings', listingRoutes);



mongoose.connect(process.env.MONGO_URI)
  .then(() => {
    // Listen for requests
    app.listen(PORT, () => {
      console.log(`Connected to db, listening on port ${PORT}`); 
    });
  })
  .catch((err) => {
    console.log(err);
  });

验证API端点代码

//res.setHeader('X-Content-Type-Options', 'nosniff');
if(req.user){
    res.status(200).json({
        success: true,
        message: "success",
        user: req.user,
        cookies: req.cookies
    })
}else{
    res.status(403).json({ message: "Auth has Failed" })
}
})

此API端点直接在地址栏访问可正常工作,但通过fetch请求调用时失效。


排查建议

  • 补全Fetch请求配置:前端fetch请求必须添加credentials: 'include'参数,跨域请求才会携带Cookie,示例:
fetch('你的API地址', {
  method: 'GET',
  credentials: 'include'
})
  • 确认HTTPS环境:secure: true要求Cookie仅在HTTPS环境下传输,本地开发用HTTP时浏览器会拒绝保存,可临时将secure设为false(仅开发环境),生产环境必须保持true。
  • 校验Cookie配置生效情况:在cookie-session中间件后添加日志,确认响应头的Cookie参数是否正确:
app.use((req, res, next) => {
  console.log('Set-Cookie header:', res.getHeader('Set-Cookie'));
  next();
});
  • 核对CORS Origin:确保process.env.FRONTEND_URL完全匹配前端实际域名(含协议、端口,比如https://your-frontend.com或http://localhost:3000),通配符*无法与credentials: true共存。
  • 检查浏览器隐私设置:部分浏览器的「阻止第三方Cookie」设置会拦截跨域Cookie,可临时关闭测试;若需兼容该场景,建议改用Token认证替代Cookie会话。

内容的提问来源于stack exchange,提问作者Mark Vitko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:37:04