vue+axios全局添加请求头和参数操作


Posted in Javascript onJuly 24, 2020

走登录的接口都会返回一个token值,然后存起来方便之后调接口的时候给后台传过去,传给后台的方式有两种:(具体使用哪种需要和后台商量)

1、放在请求头中

2、放在接口的参数中

1、放在请求头中

下面代码是从本地cookie中拿token

VueCookie:一个用于处理浏览器cookies的简单Vue.js插件.

// 在封装axios的文件中添加拦截器
// 添加请求拦截器,在请求头中加token
service.interceptors.request.use(
 config => {
 // 判断本地的cookie中是否有token
 if (VueCookie.isKey('token')) {
 config.headers.Authorization = VueCookie.get('token')
 } else {
 // 跳转到登录页面(这里使用router,是因为路由文件引入到了此文件里)
 router.push('/login')
 }
 return config
 },
 error => {
 return Promise.reject(error)
 })

这个时候虽然在请求头中放了token,但是后台并拿不到token的值,我们需要在创建axios对象的时候允许请求携带cokie,也可以加到main.js全局里面。

// 放在请求文件中
const service = axios.create({
 baseURL: "http://XXXXXXXXX:XXXX",
 timeout: 10000,
 withCredentials: true // 允许携带cookie
});
// 放在全局main.js中
import axios from "axios";
axios.defaults.withCredentials = true; // 允许携带cookie

2、放在参数中

以下代码是从本地存储localStorage中拿token

// 添加请求拦截器,在参数中加token
service.interceptors.request.use(
 config => {
 // 将token添加到每一个接口的参数中
 // 判断请求的类型:如果是post请求就把默认参数拼到data里面;如果是get请求就拼到params里面
 const token = localStorage.getItem('ISTOKEN')
 if (localStorage.getItem('ISTOKEN')) {
 // 注意:config.method 的判断值必须是小写的post和get
 if (config.method === 'post') {
 config.data = {
  api_token: token,
  ...config.data
 }
 } else if (config.method === 'get') {
 config.params = {
  api_token: token,
  ...config.params
 }
 }
 } else {
 // 跳转到登录页面(这里使用router,是因为路由文件引入到了此文件里)
 router.push('/login')
 }
 return config
 },
 error => {
 return Promise.reject(error)
 })

补充知识:Vue,POST请求头'Content-Type':'application/json;',data上传方法

如下所示:

vue+axios全局添加请求头和参数操作

transformRequest 方法说明axios中文文档

以上这篇vue+axios全局添加请求头和参数操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery创建插件的代码分析
Apr 14 Javascript
jquery 实现上下滚动效果示例代码
Aug 09 Javascript
JavaScript的Module模式编程深入分析
Aug 13 Javascript
学习JavaScript设计模式(策略模式)
Nov 26 Javascript
JavaScript学习笔记之ES6数组方法
Mar 25 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
javascript中的面向对象
Mar 30 Javascript
axios拦截设置和错误处理方法
Mar 05 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 Javascript
JS实现的tab切换并显示相应内容模块功能示例
Aug 03 Javascript
微信小程序如何实现五星评价功能
Oct 15 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 #Javascript
vuex存取值和映射函数使用说明
Jul 24 #Javascript
js实现金山打字通小游戏
Jul 24 #Javascript
vuex中store存储store.commit和store.dispatch的用法
Jul 24 #Javascript
js实现滑动滑块验证登录
Jul 24 #Javascript
解决VUEX的mapState/...mapState等取值问题
Jul 24 #Javascript
对vuex中store和$store的区别说明
Jul 24 #Javascript
You might like
PHP MSSQL 存储过程的方法
2008/12/24 PHP
phpphp图片采集后按原路径保存图片示例
2014/02/18 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
js控制frameSet示例
2013/09/10 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
javascript中不易分清的slice,splice和split三个函数
2016/03/29 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
深入理解Python3中的http.client模块
2017/03/29 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
canvas裁剪clip()函数的具体使用
2018/03/01 HTML / CSS
董事长职责范文
2013/11/08 职场文书
高一历史教学反思
2014/01/13 职场文书
协议书格式
2014/04/23 职场文书
企业员工辞职信范文
2015/05/12 职场文书
新学期主题班会
2015/08/17 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
通知怎么写?
2019/04/17 职场文书
SQL优化老出错,那是你没弄明白MySQL解释计划用法
2021/11/27 MySQL