前端采用poka.js进行解密
https://github.com/nodeca/pako 或者 npm install pako
以vue-cli npm 为例子
// npm 安装后导入 import pako from 'pako' // 加密:btoa(),解密:atob() let strData = atob(res.data.data.result_List); // 字符串转数组 在循环返回一个 Unicode表所在位置的新数组 const charData = strData.split('').map(x => x.charCodeAt(0)); // Uint8Array 数组类型表示一个8位无符号整型数组,创建时内容被初始化为0。创建完后,可以以对象的方式或使用数组下标索引的方式引用数组中的元素 const binData = new Uint8Array(charData); // 调用pako 解析 const data = pako.inflate(binData); // 处理pako.js解压过长(大)数据时报错的问题 // 数据量过大会报错RangeError: Maximum call stack size exceeded // 说明 String.fromCharCode.apply 不能接受过长的数组,那么我们可以想到将数组进行拆分->解压->拼接。 const array = new Uint16Array(data); let dataRes = ''; const chunk = 8 * 1024; let i; for (i = 0; i < array.length / chunk; i++) { dataRes += String.fromCharCode.apply(null, array.slice(i * chunk, (i + 1) * chunk)); } // 批量拼接数据 dataRes += String.fromCharCode.apply(null, array.slice(i * chunk)); strData = dataRes; // 赋值decodeURIComponent(escape())解决中文乱码问题 this.resList = decodeURIComponent(escape(strData));
本文作者为gengboxb,转载请注明。