import axios from 'axios' import apiConfig from './baseurl' import { Message } from 'element-ui' import { encryptBySM4, decryptBySM4 } from './sm4' // 添加decryptBySM4 const service = axios.create({ baseURL: apiConfig.baseURL, withCredentials: false, // 当跨域请求时发送cookie timeout: 30000, // request timeout }) // 请求拦截 service.interceptors.request.use( config => { config['headers']['Authorization'] = `${sessionStorage.getItem('token')}` // 判断是否需要加密(只对/api开头的请求进行加密) const needEncrypt = config.url.startsWith('/api'); if (config.method == 'get') { if (!config.params) config.params = {}; config.params = { ...config.params, } console.log('config.params',config.params) } if (config.method == 'post') { if (!config.data) config.data = {}; console.log('post post',config.data) if (needEncrypt) { config.data = { param: encryptBySM4(config.data) }; } } return config }, error => { return Promise.reject(error) } ) // 响应拦截 service.interceptors.response.use( response => { if (!response) { return } const res = response; // 新增解密处理:仅处理/api路径的POST响应 if (res.config.method === 'post' && res.config.url.startsWith('/api')) { try { if (res.data && res.data.data) { // 这里假设使用decryptBySM4进行解密 res.data.data = decryptBySM4(res.data.data); } } catch (e) { console.error('数据解密失败:', e); } } if (res.data.code == 200) { console.log('res.data',res.data) if (res.config.url.startsWith('/api')) { //有 if(res.data.data.code == 200){ return Promise.resolve(res.data.data || res.data) } if (res.data.data.code == 103 || res.data.data.code == 401) { Message({ message: res.data.data.msg || '登录已过期,请重新登录', type: 'warning', duration: 2000 }) // sessionStorage.clear(); // window.location.replace('/'); return Promise.reject(res.data.data.data) } Message({ message: res.data.data.msg || '服务器错误', type: 'error', duration: 2000 }) return Promise.reject(res.data.data.data) } if (!res.data) { return Promise.resolve({}) } console.log('res', res.data.data || res.data) return Promise.resolve(res.data.data || res.data) } else { if (res.data.code == 103 || res.data.code == 401) { Message({ message: res.data.msg || '登录已过期,请重新登录', type: 'warning', duration: 2000 }) // sessionStorage.clear(); // window.location.replace('/'); return Promise.reject(res.data.data) } Message({ message: res.data.msg || '服务器错误', type: 'error', duration: 2000 }) return Promise.reject(res.data.data) } }, error => { return Promise.reject(error.message) } ) export default service