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

最新文章

  1. cpp 调用python
  2. javascript平时小例子⑤(投票效果的练习)
  3. ubuntu虚拟环境virtualenv中djanggo连接mysql
  4. MapHttpRoute
  5. 用Swift重写公司OC项目(Day1)--程序的AppIcon与LaunchImage如何设置
  6. U3D中的协同等待函数
  7. MVC知识总结(前序)
  8. oracle查询表信息(索引,外键,列等)
  9. OleDbCommand cmd.Parameters.AddWithValue 添加参数时需要按照存储过程参数的顺序加入
  10. 体验 WebFont,网页上的艺术字
  11. Wireshark初步入门
  12. 移动端的搜索用的是from提交
  13. ajax @requestBody
  14. js混淆、eval解密
  15. 微软Office Online服务安装部署(一)
  16. FileStream文件流
  17. Java学习——this、this()、super 和 super()的使用
  18. 自适应手机网站meta name代码
  19. 空指针、NULL指针、零指针
  20. js弹出window.open窗口

热门文章

  1. Flask 之 高可用IP代理网站
  2. BUUCTF-数据包中的线索
  3. BUUCTF-大白
  4. 重学ES系列之拓展运算符
  5. hadoop集群搭建——单节点(伪分布式)
  6. React技巧之循环遍历对象
  7. jenkins结合ansible发布
  8. Python递归函数的定义和几个小例子
  9. Pytorch从0开始实现YOLO V3指南 part1——理解YOLO的工作
  10. springboot中实现权限认证的两个框架