Express 项目,res.cookie() 设置 Cookie 无法被保存在浏览器的 Application 中
2024-08-28 23:07:11
res.cookie()
给客户端响应头封装的 Cookie 无法被保存在客户端浏览器的 Application 中,只能在 Set-Cookie 中看到有这个值:
在前后端分离项目中,存在跨域问题,导致 Cookie 无法被存储在浏览器 Application 中。但是,只需要在前端和后端添加几个配置项就可以解决:
(1)前端发送请求添加 withCredentials:
request.post("/login", {
username, password
}, {
withCredentials: true
}).then(({ data: res }) => {
if ( res.data.length !== 0 && res.status == 200 ) {
onSuccess(res.data, res.status);
} else {
onError ? onError(res) : "";
}
}).catch(err => {
onError ? onError(err) : "";
});
(2)Express 需要使用中间件cors
解决跨域,并添加:
import express from "express";
import cors from "cors";
const app = express();
app.use(cors({ credentials: true, origin: true }));
(3)在发送 Cookie 的接口处添加 domain,因为跨域的问题,服务器生成的 Cookie 只能是相同或匹配的域才能使用,具体请看Cookie中的domain与path属性详解:
app.post("/login", (req, res) => {
let user = queryUserByUnameAndPwd(req.body.uname, req.body.pwd);
res.cookie("USERID", user.id, { domain: "localhost", maxAge: 60000 * 60 * 24 });
}
本地开发就写 localhost,等打包上线之后再配置 domain。没有添加 path 指定目录,默认是/
,localhost 下所有目录都可以使用的 Cookie。
Express 如何使用 Cookie 的博文,请看Express 使用 Cookie。
最新文章
- cpp 调用python
- javascript平时小例子⑤(投票效果的练习)
- ubuntu虚拟环境virtualenv中djanggo连接mysql
- MapHttpRoute
- 用Swift重写公司OC项目(Day1)--程序的AppIcon与LaunchImage如何设置
- U3D中的协同等待函数
- MVC知识总结(前序)
- oracle查询表信息(索引,外键,列等)
- OleDbCommand cmd.Parameters.AddWithValue 添加参数时需要按照存储过程参数的顺序加入
- 体验 WebFont,网页上的艺术字
- Wireshark初步入门
- 移动端的搜索用的是from提交
- ajax @requestBody
- js混淆、eval解密
- 微软Office Online服务安装部署(一)
- FileStream文件流
- Java学习——this、this()、super 和 super()的使用
- 自适应手机网站meta name代码
- 空指针、NULL指针、零指针
- js弹出window.open窗口