千家信息网

vue axios拦截器怎么使用

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本文小编为大家详细介绍"vue axios拦截器怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"vue axios拦截器怎么使用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习
千家信息网最后更新 2025年02月23日vue axios拦截器怎么使用

本文小编为大家详细介绍"vue axios拦截器怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"vue axios拦截器怎么使用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1、首先axios不支持vue.use()方式声明使用

看了所有近乎相同的axios文档都没有提到这一点

建议方式

在main.js中如下声明使用

import axios from 'axios';Vue.prototype.$axios=axios;

那么在其他vue组件中就可以this.$axios调用使用

2.小小的提一下vue cli脚手架

前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一到门槛,会报错

XMLHTTPRequest can not load http://40.00.100.100:3002/. Response to preflight request doesn’t pass access control….

为什么跨域同源非同源自己去查吧,在webpack配置一下proxyTable就OK了,如下

config/index.js

dev: {    加入以下    proxyTable: {      '/api': {        target: 'http://40.00.100.100:3002/',//设置你调用的接口域名和端口号 别忘了加http        changeOrigin: true,        pathRewrite: {          '^/api': '/'//这里理解成用'/api'代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写'/api/user/add'即可        }      }    },

试一下,跨域成功了,但是注意了,这只是开发环境(dev)中解决了跨域问题,生产环境中真正部署到服务器上如果是非同源还是存在跨域问题,如我们部署的服务器端口是3001,需要前后端联调,第一步前端我们可以分生产production和开发development两种环境分别测试,在config/dev.env.js和prod.env.js里也就是开发/生产环境下分别配置一下请求的地址API_HOST,开发环境中我们用上面配置的代理地址api,生产环境下用正常的接口地址,所以这样配置

module.exports = merge(prodEnv, {  NODE_ENV: '"development"',//开发环境  API_HOST:"/api/"})
module.exports = {  NODE_ENV: '"production"',//生产环境  API_HOST:'"http://40.00.100.100:3002/"'}

当然不管是开发还是生产环境都可以直接请求http://40.00.100.100:3002/。

配置好之后测试时程序会自动判断当前是开发还是生产环境,然后自动匹配API_HOST,我们在任何组件里都能用process.env.API_HOST来使用地址如

instance.post(process.env.API_HOST+'user/login', this.form)

然后第二步后端服务器配置一下cros跨域即可,就是access-control-allow-origin:*允许所有访问的意思。综上:开发的环境下我们前端可以自己配置个proxy代理就能跨域了,真正的生产环境下还需要后端的配合的。

某大神说:此方法ie9及以下不好使,如果需要兼容,最好的办法是后端在服务器端口加个代理,效果类似开发时webpack的代理。

3、axios发送get post请求问题

发送post请求时一般都要设置Content-Type,发送内容的类型,application/json指发送json对象但是要提前stringify一下。application/xxxx-form指发送?a=b&c=d格式,可以用qs的方法格式化一下,qs在安装axios后会自动安装,只需要组件里import一下即可。

const postData=JSON.stringify(this.formCustomer);'Content-Type':'application/json'}const postData=Qs.stringify(this.formCustomer);//过滤成?&=格式'Content-Type':'application/xxxx-form'}

4.axios拦截器的使用

当我们访问某个地址页面时,有时会要求我们重新登录后再访问该页面,也就是身份认证失效了,如token丢失了,或者是token依然存在本地,但是却失效了,所以单单判断本地有没有token值不能解决问题。

此时请求时服务器返回的是401错误,授权出错,也就是没有权利访问该页面。

我们可以在发送所有请求之前和操作服务器响应数据之前对这种情况过滤。

// http request 请求拦截器,有token值则配置上token值axios.interceptors.request.use(    config => {        if (token) {  // 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了            config.headers.Authorization = token;        }        return config;    },    err => {        return Promise.reject(err);    });// http response 服务器响应拦截器,这里拦截401错误,并重新跳入登页重新获取tokenaxios.interceptors.response.use(    response => {        return response;    },    error => {        if (error.response) {            switch (error.response.status) {                case 401:                    // 这里写清除token的代码                    router.replace({                        path: 'login',                        query: {redirect: router.currentRoute.fullPath}//登录成功后跳入浏览的当前页面                    })            }        }        return Promise.reject(error.response.data)     });

读到这里,这篇"vue axios拦截器怎么使用"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

环境 开发 生产 配置 服务器 服务 拦截器 地址 接口 问题 代理 组件 页面 也就是 内容 前端 文章 格式 还是 同源 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全反思报告范文 文章系统 数据库修改 浦发互联网金融科技 银川网络安全知识竞赛 考试软件开发中心 宽带连接显示键入网络安全密码 网络安全高中班会教案怎么写 网络安全防止个人信息泄露 亳州企业软件开发公司哪家好 软件开发生产率计算公式 我的世界惊变100天服务器免费版 上海网络技术转让行业标准 服务器怎样查看内网主机端口号 求生之路搭服务器 中国互联网创新科技博览会 玉溪网络技术公司招聘 地情数据库 钉钉针对什么软件开发的 系统显示没有安装到服务器 数据库安全技术短视频 台州江湖网络技术有限公司 讯猫软件开发能力 宜兴通用软件开发服务电话 nacos数据库如何升级 我的世界服务器箱子锁怎么设置 天气预报安卓软件开发 杭州边锋网络技术有限公司招 服务器宽带峰值设置多少比较好 三级网络技术手机题库 polardb地图数据库
0