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 相关文章推荐
javascript 写类方式之十
Jul 05 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
Mar 12 Javascript
js获取当前日期前七天的方法
Feb 28 Javascript
jQuery实现图片轮播特效代码分享
Sep 15 Javascript
jquery实现全屏滚动
Dec 28 Javascript
jQuery实现手机版页面翻页效果的简单实例
Oct 05 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
jQuery实现模拟flash头像裁切上传功能示例
Dec 11 Javascript
angular+bootstrap的双向数据绑定实例
Mar 03 Javascript
微信小程序实现弹出层效果
May 26 Javascript
Vue组件通信入门之Provide和Inject机制
Dec 29 Javascript
uniapp实现可以左右滑动导航栏
Oct 21 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 print EOF实现方法
2009/05/21 PHP
PHP 面向对象 PHP5 中的常量
2010/05/05 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
JavaScript中也使用$美元符号来代替document.getElementById
2010/06/19 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
js中的闭包学习心得
2018/02/06 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
webpack热模块替换(HMR)/热更新的方法
2018/04/05 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
React实现轮播效果
2020/08/25 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
python冒泡排序简单实现方法
2015/07/09 Python
对Python中的@classmethod用法详解
2018/04/21 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
股权投资协议书
2016/03/23 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript