在某些情况下,有时候会在接口请求的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)的更多相关文章

  1. Docker remote API简单配置使用

    1.启动docker remote API的方式如下: docker -d -H uninx:///var/run/docker.sock -H tcp://0.0.0.0:5678 2.但是为了伴随 ...

  2. Vue基于vuex、axios拦截器实现loading效果及axios的安装配置

    准备 利用vue-cli脚手架创建项目 进入项目安装vuex.axios(npm install vuex,npm install axios) axios配置 项目中安装axios模块(npm in ...

  3. Axios拦截器配置

    Axios 拦截器的配置如下 分三块:基础配置.请求之前拦截.响应之前拦截 发送所有请求之前和操作服务器响应数据之前对这种情况过滤. http request 请求拦截器 每次发送请求之前判断是否存在 ...

  4. vue+vux-ui+axios+mock搭建一个简单vue框架

    1.首先感谢同事 2.之前一直在做angularjs的项目,目前vue火热,所以自己搭建了一个的vue框架,在此作为记录 vue+vux-ui这里就不介绍了,有很多博客都写的很详细了. 下面简单记录下 ...

  5. vue请求简单配置

    简单记录一下vue的http请求配置相关 测试环境请求接口设置: 1.  config/dev.env.js添加: module.exports = merge(prodEnv, { NODE_ENV ...

  6. Vue2学习小记-给Vue2路由导航钩子和axios拦截器做个封装

    1.写在前面 最近在学习Vue2,遇到有些页面请求数据需要用户登录权限.服务器响应不符预期的问题,但是总不能每个页面都做单独处理吧,于是想到axios提供了拦截器这个好东西,再于是就出现了本文. 2. ...

  7. axios拦截器搭配token使用

    在了解到cookie.session.token的作用后学习token的使用 cookie是随着url将参数发送到后台,安全性最低,并且大小受限,不超过4kb左右,它的数据保存在客户端 session ...

  8. Vue-cli3.x中使用Axios发送跨域请求的配置方法

    Vue-cli3.x中使用Axios发送跨域请求的配置方法 安装axios npm i axios -s main.js中引入 import axios from 'axios' //将axios挂载 ...

  9. 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 ...

随机推荐

  1. Python 项目转化为so文件

    思路是先将py转换为c代码,然后编译c为so文件,所以要安装以下内容: python 安装:cython pip install cython linux 安装:python-devel,gcc yu ...

  2. editplus的使用技巧

    数据库sql语句中的 in 后面需要 ('xx','bb')这样的结果,多的话修改起来就比较麻烦,这时候使用editplus 的替换功能就可以实现 ,顶部菜单的 搜索 - > 替换 或者 ctr ...

  3. cookie,localStorage和sessionStorage

    一.Cookie Cookie 是小甜饼的意思.cookie 非常小,它的大小限制为4KB左右.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记住密码”,这通常就是通过在 Cookie ...

  4. 企业网站的SSL签证生产测试以及https配置方法

    这一次要做企业网站怎么获得安全的数字证书,没有数字证书的话,在浏览器访问网站的时候会跳出不安全界面,而且钓鱼网站也会让用户进去个假网站,一般企业可以去阿里云去买数字证书,买好之后浏览器便会加载这个数字 ...

  5. socket参数的详解

    socket参数的详解 socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None) 创建socket对象的参数说明: fami ...

  6. C scanf 函数的其他使用注意点

    1.scanf 函数中没有精度控制,如: scanf("%5.2f", &a )是非法的,不能企图用此语句数据小数位2位的实数 2.scanf中要求给出变量地址,如给出变量 ...

  7. 内置的os模块和sys模块

    os模块:与操作系统交互的一种接口 """ os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname& ...

  8. C#基础知识之Dynamic类型

    Dynamic类型是C#4.0中引入的新类型,它允许其操作掠过编译器类型检查,而在运行时处理. 编程语言有时可以划分为静态类型化语言和动态类型化语言.C#和Java经常被认为是静态化类型的语言,而Py ...

  9. linux 时区问题

    1.java项目发现 服务器时间不正确,修改了服务器时间之后依然没解决. 2.java虚拟机的时区也需要设置:

  10. NOIP2019(CSP2019) 游记

    NOIP2019(CSP2019) 游记 近一年的似乎也就是感觉比别的学校的同学水平低的不止一点,到现在也没有搞清楚大概应该怎么科学有效的练习,并不会思考"为什么想不到"和&quo ...