You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Axios发送POST请求返回状态码400但Postman运行正常该如何解决?

问题原因

你配置了请求头Content-Type: application/x-www-form-urlencoded,但直接传入JavaScript对象作为请求体时,axios默认会将其序列化为JSON格式,和声明的请求头格式不匹配,服务端无法正确解析参数所以返回400错误。Postman会自动对x-www-form-urlencoded类型的参数做序列化处理,所以请求可以正常执行。

解决方法
  • 方案1:使用浏览器原生URLSearchParams序列化请求体(推荐,无需额外依赖)
    修改请求体部分代码如下:
let body = new URLSearchParams({
    client_id: 'val1',
    client_secret: 'val2',
    code: '12345',
    grant_type: 'authorization_code',
    redirect_uri: 'exp://127.0.0.1:19000'
});
  • 方案2:使用qs库序列化请求体(适配低版本浏览器场景)
    先安装qs库:npm install qs,之后修改代码:
import qs from 'qs'

// 发送请求部分代码
let body={
    client_id: 'val1',
    client_secret: 'val2',
    code: '12345',
    grant_type: 'authorization_code',
    redirect_uri: 'exp://127.0.0.1:19000'
};
let config = {
  headers:{
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  // 也可以把序列化逻辑放在transformRequest里全局生效
  transformRequest: [data => qs.stringify(data)]
}
验证方法

修改代码后重新发送请求,打开浏览器控制台的「网络」标签,查看对应请求的Payload,确认请求体是key1=val1&key2=val2格式的表单参数即可。

内容的提问来源于stack exchange,提问作者Santam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:06:03