import axios from 'axios'axios.defaults.timeout = 10000//排序等封装办法import myUtil from '../../lib/myutils.js';//引入rsa私钥import rsakey from '../../lib/encrypt/rsakey.js'//引入aes/rsa加密配置文件import Utils from "../../lib/encrypt/utils.js";class HttpClient { constructor(baseUrl = process.env.VUE_APP_BASE_API) { this.baseUrl ='http://192.168.2.666/uc/' } interceptors(instance) { // 申请拦挡 instance.interceptors.request.use( (config) => { if (config.data) { // 参数非空过滤,排序,拼接成字符串 var backData = myUtil.ruleParams(config.data) config.data = backData.fliterDta // AES密钥(aesKey)随机生成字符串 var myAesKey = myUtil.randomWord(false, 32); //32位 // aesParams 应用AES加密申请参数 var aesParams = Utils.encrypt(JSON.stringify(config.data), myAesKey); // config.data = {} config.data['requestData'] = aesParams //AES加密后的AES密钥(aesKey),应用rsa私钥加密aes密钥 let rsaAesKey = Utils.JSEncryptCommon(rsakey.rsakey, myAesKey); //Vue.$encryptedData(rsakey.rsakey, myAesKey); //myAesKey解密前应用base64转字符串// ----- ok var baseRsaAesKey = rsaAesKey; // 编码 config.data['sign'] = baseRsaAesKey return config } return config }, (error) => Promise.reject(error.response) ) // response拦截器 instance.interceptors.response.use( (response) => { // 解密 if (response.data.responseData && response.data.sign) { // 1.res解出aes秘钥 var aesKey = Utils.JSDecryptCommon(response.data.sign) // 2.aes解出返回数据 var parseData = Utils.decrypt(response.data.responseData, aesKey) parseData = JSON.parse(parseData) var myres = { data: parseData } const { data } = myres const { code } = data if (data && (code === 0 || code === 4000)) return data return Promise.reject(myres) } else { const { data } = response const { code } = data if (data && (code === 0 || code === 4000)) return data return Promise.reject(response) } }, (error) => Promise.reject(error) ) } getDefaultOptions() { const config = { baseURL: this.baseUrl, timeout: 10 * 1000, // 申请超时工夫 withCredentials: false, headers: {} } return config } request(options) { const instance = axios.create() options = Object.assign(this.getDefaultOptions(), options) this.interceptors(instance, options.url) return instance(options) } // 下载接口 getDefaultOptionsD() { const config = { baseURL: ' https://api-test.baidu.com', timeout: 10 * 1000, // 申请超时工夫 withCredentials: false, headers: {} } return config } requestD(options) { const instance = axios.create() options = Object.assign(this.getDefaultOptionsD(), options) this.interceptors(instance, options.url) return instance(options) }}export default new HttpClient()