res.cookie()
给客户端响应头封装的 Cookie 无法被保存在客户端浏览器的 Application 中,只能在 Set-Cookie 中看到有这个值:
经过多方的搜索和查询,前后端分离项目中,存在跨域问题,域名不一样导致 Cookie 无法被存储在浏览器的 Application 中,而只需要前后端多加一个配置项即可:
首先是前端发送请求是需要添加的一个配置,我用的是 axios:
request.post("/login", { username, password }, { withCredentials: true }).then(({ data: res }) => { if ( res.data.length !== 0 && res.status == 200 ) { onSuccess(res.data, res.status); } else { one rror ? one rror(res) : ""; } }).catch(err => { one rror ? one rror(err) : ""; });
注意看第四行代码,多添加了一个withCredentials: true
。
Express 必须需要使用中间件cors
,然后再添加配置项:
import express from "express"; import cors from "cors"; const app = express(); app.use(cors({ credentials: true, origin: true }));