在multipart/form-data请求中传JSON对象遇‘application/octet-stream不支持’错误求助
解决multipart/form-data传输JSON对象时的Content-Type错误
问题原因
直接往FormData里追加JSON字符串时,浏览器会默认把metadata字段的Content-Type设为application/octet-stream,但后端期望这个字段接收application/json类型的数据,因此触发了不支持的错误。Postman能正常运行,是因为你在Postman里给metadata字段指定了application/json的Content-Type。
解决方案
用Blob包装JSON字符串,手动指定Content-Type为application/json后再追加到FormData中:
const data = JSON.stringify(values); const formData = new FormData(); // 用Blob包装JSON字符串,设置正确的Content-Type formData.append('metadata', new Blob([data], { type: 'application/json' })); return await axios.post(url, formData);
注意事项
- 不要手动给axios请求设置
Content-Type: multipart/form-data,当传入FormData时,axios会自动生成包含boundary的正确请求头,手动设置会丢失boundary信息,可能引发新的错误。
内容的提问来源于stack exchange,提问作者robertg
相关产品推荐
相关产品推荐

