axios请求data包含等号时无法发送正确数据对象的问题咨询
问题根因
你发送的是JSON格式请求体,但请求头的Content-Type被错误设置为application/x-www-form-urlencoded。这种格式会把请求体中的=识别为键值对分隔符,你JSON内容里的=触发了错误切割逻辑,最终导致发送的数据格式损坏。
解决方案
方案1:使用标准JSON请求格式(推荐)
axios默认支持自动序列化JS对象为JSON、并自动设置正确的application/json请求头,不需要提前手动调用JSON.stringify,修改两处即可:
- 构造请求数据时直接传递原始JS对象,不需要序列化:
// 替换原有 let data = JSON.stringify(json); let data = json;
- 可在axios配置中手动指定请求头,避免全局配置覆盖:
request = await axios.request({ url, method, data, headers: { authorization: this.$root.getToken(), 'Content-Type': 'application/json' }, });
方案2:若接口强制要求x-www-form-urlencoded格式
将JSON字符串作为键值对的值传递,同时做URL编码规避=被误解析:
let data = 'payload=' + encodeURIComponent(JSON.stringify(json));
后端接收后提取payload字段,URL解码后再做JSON解析即可。
内容的提问来源于stack exchange,提问作者CodeTappert
相关产品推荐
相关产品推荐

