阅读 183

前端拦截器过滤字符,响应器转换

// 请求拦截器axios.interceptors.request.use((request) => {    let reg = /select|update|and|or|delete|insert|trancate|char|into|substr|ascii|declare|exec|count|master|drop|execute/;    let regArr = ['select', 'update', 'and', 'or', 'delete', 'insert', 'trancate', 'char', 'into', 'substr', 'ascii', 'declare', 'exec', 'count', 'master', 'drop', 'execute'];    for (let i in request.data) { // 判断data中每一项的数据类型        if (reg.test(request.data[i])) {            request.data[i] = intercept.checkSqlString(regArr, request.data[i]);        }    }    return request; });// 响应拦截器axios.interceptors.response.use(    response => {    /*        response: { 第一种            data: { // res                code: 0,                data: {                    param: '',                    data: {                        params: '',                        personList: [                            personAttributes: {}                        ],                    }                },                msg:''            }        },        response: { 第二种            param: '',            params: '';            map: '',        }        res:            code: 0            data: {                afterTotal: 2                beforeTotal: 15                chooseTotal: 25                collectiveCount: 10                data: [                    0: {…}                    1: {…}                    2: {…}                    3: {…}                    4: {…}                    5: {…}                ]                nowTotal: 8                oneCount: 15                sumTotal: 25                total: 25            }            msg: "磨课查询成功"    */        let reg = /s`&&`elect|u`&&`pdate|a`&&`nd|o`&&`r|d`&&`elete|i`&&`nsert|t`&&`rancate|c`&&`har|i`&&`nto|s`&&`ubstr|a`&&`scii|d`&&`eclare|e`&&`xec|c`&&`ount|m`&&`aster|d`&&`rop|e`&&`xecute/;        let regArr = ['s`&&`elect', 'u`&&`pdate', 'a`&&`nd', 'o`&&`r', 'd`&&`elete', 'i`&&`nsert', 't`&&`rancate', 'c`&&`har', 'i`&&`nto', 's`&&`ubstr', 'a`&&`scii', 'd`&&`eclare', 'e`&&`xec', 'c`&&`ount', 'm`&&`aster', 'd````rop', 'e````xecute'];        let res = response.data; // 变量缩写提高可读性        if (res.data) { // 第一种情况 res 中存在 data 对象            for (let i in res.data) { // 判断data中每一项的数据类型                if (Object.prototype.toString.call(res.data[i]) === '[object Object]') { // 类型为对象                    for (var j in res.data[i]) {                        if (reg.test(res.data[i][j])) {                            res.data[i][j] = intercept.checkSqlResponse(regArr, res.data[i][j]); // 替换字符                        }                    }                } else if (Array.isArray(res.data[i])) {                    let isTwoArray = res.data[i].some(items => { // 判断是否为二维数组                        return Array.isArray(items);                    });                    res.data[i].forEach(oneItem => {                        if (Object.prototype.toString.call(oneItem) === '[object Object]') { // arr子项为obj                            for (let c in oneItem) {                                if (reg.test(oneItem[c])) {                                    oneItem[c] = intercept.checkSqlResponse(regArr, oneItem[c]); // 替换字符                                }                            }                        } else { // arr子项为string                            if (reg.test(oneItem)) {                                oneItem = intercept.checkSqlResponse(regArr, oneItem); // 替换字符                            }                        }                    });                    if (isTwoArray) {                        let twoIndex = res.data[i].findIndex(items => { // 寻找存在二维数组的项的index                            return Array.isArray(items);                        });                        res.data[i][twoIndex].forEach(twoItem => {                            if (Object.prototype.toString.call(twoItem) === '[object Object]') { // arr子项为obj                                for (let d in twoItem) {                                    if (reg.test(twoItem[d])) {                                        twoItem[d] = intercept.checkSqlResponse(regArr, twoItem[d]); // 替换字符                                    }                                }                            } else { // arr子项为string                                if (reg.test(twoItem)) {                                    twoItem = intercept.checkSqlResponse(regArr, twoItem); // 替换字符                                }                            }                        });                    }                } else {                    if (reg.test(res.data[i])) { // 类型为字符串                        res.data[i] = intercept.checkSqlResponse(regArr, res.data[i]); // 替换字符                    }                }            }        }        if (response.data.status === 1 && response.data.msg === 'Fail, No permissions, Please login !') {            if (sessionStorage.isLogin) {                store.commit('setLoginFlag', false);                router.push({path: '/loginout/login', query: {login: 'timeOut'}});            }        }        return response;    }     );


作者:一只小彩蛋
链接:https://juejin.cn/post/7028112141139836959

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐