技术编程前后端分离时cookie写入的问题你遇到过吗
前端在单页面开发中 , 通常会采用proxy代理的方式进行后台服务的转发 , 部署到nginx服务器 , 此时不做其他配置的情况下 , 如果项目用到cookie,可能会出现cookie写入失败的问题 。
仔细查看set-cookie的值时发现其中包括Path:/XXX/XXX的键值 , 一般/XXX/XXX为后台项目名 , 它意味着你的前端项目需运行在这个目录下cookie才能写入成功 。
当然我们自己按照名称创建/XXX/XXX的目录 , 再把项目放入其中可以解决此问题 , 但未免太粗暴 , 如果Path的值改变 , 我们又需要再次改变项目目录结构 。 nginx 代理的方式
如果项目生产环境使用了nginx代理 , 那么只需要一行配置就可以轻松搞定 , 直接上代码
本文插图
nginx配置
原理是代理转换了cookie的path , 从/aaa , 转换成/ 。 这样项目就不用做任何修改了 。 webpack-dev-server 解决方案
了解前面两个方案之后 , 我们来看看重头戏 , 项目本地开发时使用webpack-dev-server(^2.4.5)提供的代理功能 , 我们该怎么来配置呢?相信比较熟悉webpack-dev-server的同学都知道webpack-dev-server可以配置proxy , 其实就是个代理的配置 。 先看一下最终的解决方案 , 在webpack.config.js中配置 , 如下
本文插图
proxy配置
使用onProxyRes的配置进行手动修改cookie 。 如果其他同学有其他简单一些的方式 , 还望不吝赐教!
同样是作为代理 , 思路就是参照nignx的思路一样 , 对cookie 的path进行一个转化 , 这样思路就明确了 , 查找配置 , 转换cookie 。
onProxyRes会对response进行拦截 , 如果response-header中包含set-cookie,会根据正则匹配并通过replace方法替换成/ , 也就是根路径 , 删掉之前的cookie并重新写入 。 更简洁的方式
最新的webpack-dev-server3.1.5已经支持配置cookiePathRewrite,依赖于http-proxy的更新 , 所以现在修改cookie的path更简单了 。
本文插图
【技术编程前后端分离时cookie写入的问题你遇到过吗】如果有其他方式或问题 , 欢迎评论区沟通~~
- 更名为广东职业技术师范学院天河学院
- 36氪利用无人驾驶技术切入水域智慧环卫与维护,“欧卡智能”获千万元级融资
- 上游新闻|精度达到2-3米,北斗系统发言人:中国北斗攻克160余项关键技术
- IT之家|三星Galaxy Note 20将搭载UWP技术 传文件比NFC更快
- 央视新闻客户端|北斗系统工程新技术应用超过70%
- 问董秘|提供设备和技术的正是克劳...,投资者提问:中石油系统已经大量加入做聚丙烯熔喷料
- 我国|我国封锁“世界唯一专利”,日本出3000亿要买,美国要求技术共享
- 检测|辽宁派16支核酸检测医疗队驰援大连,研发10合1混采技术
- 北斗办:北斗与5G融合将推动无人驾驶等技术发展
- 北斗系统工程新技术应用超过70%