使用Axios带Header发送POST请求返回400错误,疑与FileBase64有关
解决POST请求返回Bad Request的问题
可能的原因及对应解决方案:
请求URL错误
你代码里用GET_CATEGORIES作为POST请求的地址,这个变量名看起来是获取分类的GET接口,大概率不是提交产品的POST接口。先确认这个URL是否正确,换成后端指定的产品提交接口地址。Content-Type与数据格式不匹配
你当前设置的Content-Type: application/json,但如果用FileBase64转了base64文件,后端可能不期望JSON格式:- 如果后端接收JSON:确保传入的
data是完整合法的JSON结构,比如base64字段的键名要和后端约定一致,没有遗漏必填字段。 - 如果后端接收文件表单:把base64转成Blob,用FormData来传递,同时去掉手动设置的Content-Type(axios会自动处理):
// 把base64转成Blob的工具函数 function dataURLtoBlob(dataurl) { const arr = dataurl.split(','); const mime = arr[0].match(/:(.*?);/)[1]; const bstr = atob(arr[1]); const n = bstr.length; const u8arr = new Uint8Array(n); while(n--) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], { type: mime }); } // 构建FormData示例 const blob = dataURLtoBlob(file); const formData = new FormData(); formData.append('file', blob); // 字段名和后端保持一致 formData.append('productName', '示例产品'); // 其他必填字段 // 修改请求头,去掉Content-Type const header = { headers: { 'Authorization': 'Bearer ' + TOKEN } }
- 如果后端接收JSON:确保传入的
TOKEN有效性问题
检查TOKEN是否过期、格式是否正确(Bearer后面必须有空格),可以在Network面板里查看请求头里的Authorization字段是否和后端要求一致。请求体结构不符
打开浏览器开发者工具的Network面板,查看发送的POST请求的Request Payload,对比后端文档要求的字段和格式,确认没有缺失或错误。
内容的提问来源于stack exchange,提问作者Mücahit
相关产品推荐
相关产品推荐

