axios 拦截以及 API简单配置(element)
在某些情况下,有时候会在接口请求的API中需要拿到存在浏览器中的COOKIE,调用的方式可以为:
// 获取浏览器Cookie
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = ; i <ca.length; i++) {
var c = ca[i];
while (c.charAt() == ' ') {
c = c.substring();
}
if (c.indexOf(name) == ) {
return c.substring(name.length, c.length);
}
}
return "";
}
在axios请求中,需要在发送前和发送后进行简单的设置拦截:
// 添加一个响应拦截器
Axios.interceptors.request.use((config) => {
let account = sessionStorage.account;
let token = sessionStorage.token;
// if(config.url == Axios.bullRanking){
// // config.headers['Authorization'] = 'Bearer';
// }else{
// config.headers['Authorization'] = 'Bearer ' + token;
// }
config.headers['Authorization'] = 'Bearer ' + token
// config.headers['Accept'] = 'application/json'
// config.headers['account'] = account;
//在发送请求之前做某件事
// 判断是否登录
// let cur_id = "cur_id",
// sign = "sign";
// if (!cur_id||!sign) {
// localStorage.clear();
// window.location.href = "index.html";
// }; // 给手机验证码接口加mcode
// if(config.url == Axios.send_sms){
// if(sessionStorage.mcode){
// var mcode = sessionStorage.mcode
// config.data.mcode = mcode
// }
// } if(config.url)
if(config.method === 'post'){
config.data = qs.stringify(config.data);
config.data = config.data+"&account=" + account;
config.headers['locale'] = getCookie('language')=='Chinese'?'zh-CN':'en';
config.headers['from'] = 'pc';
}
if(config.method === 'get'){
config.headers['locale'] = getCookie('language')=='Chinese'?'zh-CN':'en';
config.headers['from'] = 'pc';
}
return config;
},(error) =>{
_.toast("错误的传参", 'fail');
return Promise.reject(error);
}); // 添加返回信息验证
Axios.interceptors.response.use(function (response) {
if(response.data.status =='' || response.data.status ==''){
if(!sessionStorage.account){
return false;
}
sessionStorage.clear();
if (process.env.NODE_ENV === 'production') {
window.location.href = "/wap/#/login";
} else {
window.location.href = "/#/login";
} }
// console.log(sessionStorage.account)
if(response.data.status =='' || response.data.code ==''){
Vue.prototype.resetSetItem('watchStorage', 'false');
// sessionStorage.setItem("watchStorage", 'false'); // console.log(123)
if(window.location.hash !='#/home'&&window.location.hash !='#/XXXX'){
Message({
showClose: true,
message: response.data.msg,
type: "error"
});
window.location.href = "#/Login"; return
} }
return response;
}, function (error) {
return Promise.reject(error);
});
其中的
Vue.prototype.resetSetItem('watchStorage', 'false'); 是全局封装的监听sessionStorage变化的。
axios 拦截以及 API简单配置(element)的更多相关文章
- Docker remote API简单配置使用
1.启动docker remote API的方式如下: docker -d -H uninx:///var/run/docker.sock -H tcp://0.0.0.0:5678 2.但是为了伴随 ...
- Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
准备 利用vue-cli脚手架创建项目 进入项目安装vuex.axios(npm install vuex,npm install axios) axios配置 项目中安装axios模块(npm in ...
- Axios拦截器配置
Axios 拦截器的配置如下 分三块:基础配置.请求之前拦截.响应之前拦截 发送所有请求之前和操作服务器响应数据之前对这种情况过滤. http request 请求拦截器 每次发送请求之前判断是否存在 ...
- vue+vux-ui+axios+mock搭建一个简单vue框架
1.首先感谢同事 2.之前一直在做angularjs的项目,目前vue火热,所以自己搭建了一个的vue框架,在此作为记录 vue+vux-ui这里就不介绍了,有很多博客都写的很详细了. 下面简单记录下 ...
- vue请求简单配置
简单记录一下vue的http请求配置相关 测试环境请求接口设置: 1. config/dev.env.js添加: module.exports = merge(prodEnv, { NODE_ENV ...
- Vue2学习小记-给Vue2路由导航钩子和axios拦截器做个封装
1.写在前面 最近在学习Vue2,遇到有些页面请求数据需要用户登录权限.服务器响应不符预期的问题,但是总不能每个页面都做单独处理吧,于是想到axios提供了拦截器这个好东西,再于是就出现了本文. 2. ...
- axios拦截器搭配token使用
在了解到cookie.session.token的作用后学习token的使用 cookie是随着url将参数发送到后台,安全性最低,并且大小受限,不超过4kb左右,它的数据保存在客户端 session ...
- Vue-cli3.x中使用Axios发送跨域请求的配置方法
Vue-cli3.x中使用Axios发送跨域请求的配置方法 安装axios npm i axios -s main.js中引入 import axios from 'axios' //将axios挂载 ...
- 12. 前后端联调 + ( proxy代理 ) + ( axios拦截器 ) + ( css Modules模块化方案 ) + ( css-loader ) + ( 非路由组件如何使用history ) + ( bodyParser,cookieParser中间件 ) + ( utility MD5加密库 ) + ( nodemon自动重启node ) + +
(1) proxy 前端的端口在:localhost:3000后端的端口在:localhost:1234所以要在webpack中配置proxy选项 (proxy是代理的意思) 在package.jso ...
随机推荐
- Nginx设置上传文件大小限制
就是nginx对上传的图片大小有了限制嘛,所以更改nginx的配置文件就好了 client_max_body_size 1000m; 参考:https://blog.csdn.net/TitanSee ...
- 伟大的GIL
GIL 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念.就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代 ...
- /proc/sys/fs/file-max
Linux的/proc/sys/fs/file-max决定了当前内核可以打开的最大的文件句柄数. 查看当前的值: cat /proc/sys/fs/file-max 这个值在kernel的文档里是这样 ...
- Beta冲刺-(1/3)
这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.cnbl ...
- java并发学习--第七章 JDK提供的线程工具类
一.ThreadLocal ThreadLocal类用于隔离多线程中使用的对象,为ThreadLocal类中传递的泛型就是要隔离的对象,简单的来说:如果我们在主线程创建了一个对象,并且需要给下面的多线 ...
- C\C++下获取系统进程或线程ID(转)
在程序开发时有时需要获取线程和进程ID以分析程序运行 ()windows下获取进程或线程ID 通过调用系统提供的GetCurProcessId或GetNowThreadID来获取当前程序代码运行时的进 ...
- C# 实战笔记
http://www.cnblogs.com/ymnets/p/3424514.html 学习点 关于IEnumerable和IQueryable两接口的区别 二者都是静态类 区另主要在: (1)所有 ...
- SpringBoot中资源初始化加载的几种方式
一.问题 在平时的业务模块开发过程中,难免会需要做一些全局的任务.缓存.线程等等的初始化工作,那么如何解决这个问题呢?方法有多种,但具体又要怎么选择呢? 二.资源初始化 1.既然要做资源的初始化,那么 ...
- HTTP教程
适合人群 本教程已为计算机学科毕业生和Web开发人员准备,帮助他们了解与超文本传输协议(HTTP)相关的基本到高级概念. 预备知识 在继续本教程之前,最好对Web概念,Web浏览器,Web服务器, ...
- linux运维、架构之路-git版本管理
一.常见版本管理系统 1.SVN 集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不能访问,所有的使用者无法使用svn,无法进行提交或者备份文件 2.Git 分布 ...