配置:
let Consts = {Secret: {key: 'aaaabbbbccccdddd', // 必须16位(前后端要一致 , 密钥)urls: ['/users/save']}}export default Consts这里的urls表示对那些请求进行拦截出来(加解密) , 这里也可以配置 "*" 表示对所有的请求出来 。
axios请求前和响应后对数据进行加解密出来:
发送请求前:
axios.interceptors.request.use((config) => {let uri = config.urlif (uri.includes('?')) {uri = uri.substring(0, uri.indexOf('?'))}if (window.cfg.enableSecret === '1' && config.data && (Consts.Secret.urls.indexOf('*') > -1 || Consts.Secret.urls.indexOf(uri) > -1)) {let data = https://www.isolves.com/it/cxkf/bk/2023-08-28/config.datalet secretText = Utils.Secret.encrypt(data)config.data = secretText}return config}, (error) => {let errorMessage = '请求失败'store.dispatch(types.G_SHOW_ALERT, {title: '请求失败', content: errorMessage, showDetail: false, detailContent: String(error)})return Promise.reject(error)})axios.interceptors.response.use((response) => {let uri = response.config.urlif (uri.includes('?')) {uri = uri.substring(0, uri.indexOf('?'))}if (window.cfg.enableSecret === '1' && response.data && (Consts.Secret.urls.indexOf('*') > -1 || Consts.Secret.urls.indexOf(uri) > -1)) {let data = Utils.Secret.decrypt(response.data)if (data) {response.data = data}}return response}, (error) => {console.error(`test interceptors.response is in, ${error}`)return Promise.reject(error)})这里的 window.cfg.enableSecret 配置是我自己项目中有个配置文件配置是否开启 , 这个大家可以根据自己的环境来实现 。
测试:

文章插图
图片
这里可以看到前端发起的请求内容已经被加密了
响应内容:

文章插图
图片
完毕!!!
【详解API接口如何安全的传输数据】
推荐阅读
- 容器技术架构、网络和生态详解
- 什么是小跑铅钓法?小跑铅钓法详解
- TypeScript接口与类 - 类型系统高级用法
- SpringBoot项目中异步调用接口方式知多少?
- Redis干货 | 五种常用类型之Hash哈希存储类型详解
- SpringBoot通过一个注解结合Redis实现接口限流就是这么简单
- MySQL算术运算符使用详解
- MySQL逻辑运算符使用详解
- 水草造景教程 水草造景教程详解
- tpc接口和普通接口的区别 tpc接口是什么
