vue webpack重写cookie路径的方法


Posted in Javascript onJuly 10, 2019

Cookie详解

Cookie在远程浏览器端存储数据并以此跟踪和识别用户的机制。从实现上说,Cookie是存储在客户端上的一小段数据,浏览器(即客户端)通过HTTP协议和服务器端进行Cookie交互。

Cooke独立于语言存在,严格地说,Cookie并不是由PHP、Java等语言实现的,而是由这些语言对Cookie进行间接操作,即发送HTTP指令,浏览器收到指令便操作Cookie并返回给服务器。因此,Cookie是由浏览器实现和管理的。举例说,PHP并没有真正设置过Cookie,只是发出指令让浏览器来做这件事。PHP中可以使用setcookie() 或 setrawcookie() 函数设置Cookie。setcookie()最后一个参数HttpOnly设置了后,JavaScript就无法读取到这个Cookie。

设置Cookie时需注意:①函数有返回值,false失败,true成功,成功仅供参考,不代表客户端一定能接收到;②PHP设置的Cookie不能立即生效,要等下一个页面才能看到(Cookie从服务器传给浏览器,下个页面浏览器才能把设置的Cookie传回给服务器);如果是JavaScript设置的,是立即生效的;③Cookie没有显示的删除函数,可以设置expire过期时间,自动触发浏览器的删除机制。

Cookie是HTTP头的一部分,即现发送或请求Cookie,才是data域;setcookie()等函数必须在数据之前调用,这和header() 函数是相同的。不过也可以使用输出缓冲函数延迟脚本的输出,知道设置好所有Cookie和其他HTTP标头。

Cookie通常用来存储一些不是很敏感的信息,或者进行登录控制,也可用来记住用户名、记住免密码登录、防止刷票等。每个域名下允许的Cookie是有限制的,根据浏览器这个限制也不同。Cookie不是越多越好,它会增加宽带,增加流量消耗,所以不要滥用Cookie;不要把Cookie当作客户端的存储器来用。一个域名的每个Cookie限制以4千字节(KB)键值对的形式存储。

还有一种Cookie是Flash创建的,成为Flash Shard Object,又称Flash Cookie,即使清空浏览器所有隐私数据,这类顽固的Cookie还会存在硬盘上,因为它只受Flash管理,很多网站采用这种技术识别用户。

Cookie跨域,主要是为了统一应用平台,实现单点登录;需使用P3P协议(Platform for Privacy Preferences),通过P3P使用户自己可以指定浏览器的隐私策略,达到存储第三方Cookie的目的,只需要在响应用户请求时,在HTTP的头信息中增加关于P3P的配置信息就可以了。Cookie跨域涉及两个不同的应用,习惯上称为第一方和第三方。第三方通常是来自别人的广告、或Iframe别的网站的URL,这些第三方网站可能使用的Cookie。

好,重点给大家介绍vue webpack重写cookie路径的方法,具体内容如下所示:

webpack提供的反向代理服务器在开发阶段非常方便,几行简单的代码配置就可以使用反向代理功能,包括路径重写、cookie处理等。

项目开发阶段使用的API路径是 /admin ,部署到线上是 / ,所以在开发过程中需要在 proxyTable 进行反向代理配置,将路径重写掉,路径重写代码如下( config/index.js ):

proxyTable: {
  '/admin': {
  target: 'http://127.0.0.1:8080',
  changeOrigin: true,
  pathRewrite: {
   '^/admin': '/admin2'
  },
  }
}

启动项目之后进行登录,此时API请求成功,但是获取登录用户信息时发现cookie没有带过去。查看请求发现登录请求的 Set-Cookie 响应头中的 Path 是 /admin2 。但是咱们请求的路径是 /admin ,cookie当然不会生效。

查阅文档发现,proxyTable支持 onProxyRes 回调函数来自定义响应,流程是通过替换后端服务器设置的 cookie-path 来进行处理,代码如下:

proxyTable: {
  '/admin': {
  target: 'http://127.0.0.1:8080',
  changeOrigin: true,
  pathRewrite: {
   '^/admin': '/lesson/admin'
  },
  onProxyRes: function (proxyRes, req, res){
   const cookies = proxyRes.headers['set-cookie']
   if (cookies) {
   const newCookies = cookies.map(cookie=> {
    return cookie.replace(/Path=\/admin2/, 'Path=/')
   })
   delete proxyRes.headers['set-cookie']
   proxyRes.headers['set-cookie'] = newCookies
   }
 }
 },
},

重启webpack之后重新登录,发现cookie的路径已经被重写到 / 了。

总结

以上所述是小编给大家介绍的vue webpack重写cookie路径的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
通过隐藏option实现select的联动效果
Nov 10 Javascript
jquery实现点击文字可编辑并修改保存至数据库
Apr 15 Javascript
深入探密Javascript数组方法
Jan 08 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
Jul 07 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
Aug 01 Javascript
vue2 自定义动态组件所遇到的问题
Jun 08 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
Oct 16 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
May 01 Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 Javascript
自定义Vue中的v-module双向绑定的实现
Apr 17 Javascript
解决layui数据表格Date日期格式的回显Object的问题
Sep 19 Javascript
vue登录页面cookie的使用及页面跳转代码
Jul 10 #Javascript
Laravel admin实现消息提醒、播放音频功能
Jul 10 #Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
Jul 10 #Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 #jQuery
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 #jQuery
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 #jQuery
JS根据Unix时间戳显示发布时间是多久前【项目实测】
Jul 10 #Javascript
You might like
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
php常用hash加密函数
2014/11/22 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
php和html的区别点详细总结
2019/09/24 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
python实现数据写入excel表格
2018/03/25 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
招商专员岗位职责
2014/02/08 职场文书
学生会个人自荐书范文
2014/02/12 职场文书
市场营销工作计划书
2014/05/06 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL