axios请求加密为字符串,禁用默认的双引号
feilong.org 修订于2025-08-18 11:44:56 5 次浏览axios请求的json对象被加密为字符串后,如果直接用字符串发送给后端接口,axios会给此字符串默认加双引号后发送。后端接口想直接接收字符串,不想要双引号,那前端应该怎么禁用默认的这种JSON 转换行为呢?本日志修订地址:https://feilong.org/axios-string-yinyong-shuangyinhao
axios config.data= 字符串值 时,浏览器 把 字符串值 加了 双引号
config.data已经是不带双引号的字符串,
但是请求发送后,发生 浏览器里,接口请求,有效荷载 payload , 此字符串竟然 被带了 双引号。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
import axios from 'axios'; import { encodeFunc, decodeFunc } from '@/utils'; //加密解密方法可以自己写 //HTTP request 拦截 axios.interceptors.request.use((config) => { console.log('axios.request 配置: ', config); // 是否加密请求config.data //3 feilong.org const cryptoData = config.cryptoData === true; if (cryptoData) { //config.headers['Accept'] = '*/*'; //config.headers['Content-Type'] = 'text/plain'; config.headers['Content-Type'] = 'application/json'; let processData = config.data; if (typeof config.data === 'string') { processData = encodeFunc(config.data); } else { const str = JSON.stringify(config.data); processData = encodeFunc(str); } config.data = processData; config.transformRequest = [(data) => data]; //关键在这里 } // //3 feilong.org return config; }); //HTTP response拦截 axios.interceptors.response.use((res) => { console.log('axios.response 响应: ', res); //是否要解密res.data //4 feilong.org const cryptoData = res.config.cryptoData === true; if (cryptoData) { res.data = JSON.parse(decodeFunc(res.data.responseData)); //responseData是加密结果 console.log('axios.response 解密: ', res.data); } return res; }); export default axios; |
最关键的是 config.transformRequest = [(data) => data]
更新网址:https://feilong.org/axios-string-yinyong-shuangyinhao
最初发布:20250818 09:58:25 feilong.org 于广州
加入收藏夹,查看更方便。
所在分类: js 教程