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

Python可正常调用的POST请求用JS实现返回400错误该如何解决?

错误原因

  • 数据格式不匹配:Python中调用requests.post时传入data参数,会默认将字典 payload 序列化为application/x-www-form-urlencoded格式的表单数据,你的后端接口适配的是该格式。而JS代码中直接将payload序列化为JSON字符串,发送的是JSON格式数据,和后端预期的解析规则不匹配,因此返回400错误。
  • 缺少对应Content-Type头:fetch请求发送非表单的自定义格式数据时,需要显式在请求头中声明Content-Type,否则后端无法正确识别请求体的编码格式。

解决方案

有两种可选择的修复方案,优先选择第一种完全对齐原Python请求逻辑:

方案1:发送表单格式数据(和原Python逻辑完全一致)

使用URLSearchParams将payload转为表单格式,代码如下:

const payload = {
  "content": "this is text",
};
fetch("https://website.com/api/e1", {
  method: "POST",
  headers: {
    "authorization": "abcd1234"
  },
  body: new URLSearchParams(payload)
});

URLSearchParams会自动携带正确的Content-Type: application/x-www-form-urlencoded请求头,不需要手动额外声明。

方案2:发送JSON格式数据(需后端支持JSON解析)

如果确认后端接口支持接收JSON格式的请求体,只需补充声明JSON对应的Content-Type头即可:

const payload = {
  "content": "this is text",
};
fetch("https://website.com/api/e1", {
  method: "POST",
  headers: {
    "authorization": "abcd1234",
    "Content-Type": "application/json"
  },
  body: JSON.stringify(payload)
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:39:00