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 相关文章推荐
微信小程序 数据访问实例详解
Oct 08 Javascript
js格式化时间的简单实例
Nov 27 Javascript
Node.js中process模块常用的属性和方法
Dec 13 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
Jan 18 Javascript
详解vue组件基础
May 04 Javascript
vue.js中proxyTable 转发请求的实现方法
Sep 20 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
Vue 递归多级菜单的实例代码
May 05 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
Jun 17 Javascript
vue+ts下对axios的封装实现
Feb 18 Javascript
bootstrap-table后端分页功能完整实例
Jun 01 Javascript
nestjs返回给前端数据格式的封装实现
Feb 22 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
php基础学习之变量的使用
2011/06/09 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
JS中取二维数组中最大值的方法汇总
2016/04/17 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
DOM事件探秘篇
2017/02/15 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
python封装对象实现时间效果
2020/04/23 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python中用于计算对数的log()方法
2015/05/15 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
python3中rank函数的用法
2019/11/27 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
详解python 破解网站反爬虫的两种简单方法
2020/02/09 Python
python实现简单井字棋游戏
2020/03/04 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
泰坦尼克号观后感
2015/06/04 职场文书
婚宴父亲致辞
2015/07/27 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
Golang bufio详细讲解
2022/04/21 Golang