后端express设置跨域后,前端没有保存cookie

来源:7-16 联调-介绍html页面

菜鸟x

2021-08-18

这里已经看到了cookie,但是application里面没有保存cookie,请求的session里面也没username等信息
图片描述
图片描述


app.use(session({
  secret: 'adb123_', // 密匙
  name: 'session_id', // 保存在本地 cookie 的一个名字,默认为connect.sid 可以不设置
  saveUninitialized: true, // 强制将未初始化的 session 存储,默认为true。建议为 true
  resave: true, // 强制保存 session,即使它没有变化,默认为true。建议设置为false
  // rolling: true, // 在每次请求时设置 cookie,这将重置 cookie 过期时间,默认为 false
  cookie: {
    path: '/', // 默认配置
    httpOnly: true, // 默认配置
    maxAge: 24 * 60 * 60 * 1000 // session过期时间为一天
  }
}))
// 跨域的设置
app.use((req, res, next) => {
  const origin = req.headers.origin
  res.setHeader('Access-Control-Allow-Origin', origin)
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT')
  const headers = 'X-Custom-Header, Origin, X-Requested-With, Content-Type, Accept'
  res.setHeader('Access-Control-Allow-Headers', headers)
  // 发送请求时带 cookie
  res.setHeader('Access-Control-Allow-Credentials', true)

  const maxAge = 24 * 60 * 60 * 1000
  // res.cookie("name", "zhangsan", {maxAge, httpOnly: true})
  next()
})
写回答

2回答

双越

2021-08-19

跨域设置 cookie 

1. 服务端要设置 

res.header("Access-Control-Allow-Credentials",true);

2. 前端要设置 withCredentials

https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/withCredentials 


0
2
双越
回复
菜鸟x
像这种问题,你单独做一个最简单的 demo (只包含一个跨域传递 cookie 功能,其他任何功能都不要加),试一下。
2021-08-24
共2条回复

双越

2021-08-18

比较怪异。

我看你截图中,请求的服务端 host 是 localhost:3000 ,你前端 host 是哪个?有没有跨域

0
2
菜鸟x
http://192.168.19.33:5500,跨域了
2021-08-18
共2条回复

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4051 学习 · 2006 问题

查看课程