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

Axios POST请求在Node.js正常,React Native返回400错误原因排查

Axios POST在Node.js正常但React Native返回400的原因分析

你的请求代码如下:

axios
  .post(url, form, {
    headers: {
      Cookie: "key1=" + value1 + "; " + "key2=" + value2,
      Referer: value3,
      "Content-Type": "multipart/form-data",
    },
    transformRequest: (formData) => formData,
  })
  .then((response) => console.log(response.data))
  .catch((error) => console.log(error.response.data));

出现Node.js环境正常、React Native返回400的差异,核心是两个环境的网络实现、Axios处理逻辑不同导致的,具体原因和解决办法如下:

  • Multipart/form-data 头的错误设置
    Node.js中Axios会自动为FormData生成带boundary的Content-Type头,而手动设置"Content-Type": "multipart/form-data"会覆盖这个自动生成的头,导致请求缺少关键的boundary信息。React Native的网络层对这种不完整的multipart请求兼容性更差,服务器无法解析表单内容,直接返回400。
    解决:删掉headers里的"Content-Type": "multipart/form-data"配置,让Axios自动处理。

  • Cookie头的处理差异
    React Native基于的网络引擎(XMLHttpRequest/Fetch)和Node.js的http模块对Cookie的解析、传递逻辑不同,手动拼接的Cookie字符串可能存在格式问题,或者React Native中某些场景下自定义Cookie头会被过滤。
    优化:改用模板字符串更规范地拼接Cookie:Cookie: key1=${value1}; key2=${value2}``,或者测试移除Cookie头,确认是否是Cookie导致的问题。如果需要持久化Cookie,React Native建议用专门的Cookie管理库来处理。

  • transformRequest的多余配置
    这个配置的作用是修改请求发送前的数据,在Node.js中它可能不影响FormData的正常传递,但React Native中,Axios默认已经有处理FormData的逻辑,手动设置transformRequest: (formData) => formData可能干扰了内部的转换流程,导致请求体格式错误。
    解决:直接移除这个transformRequest配置项。

  • Referer头的有效性问题
    部分服务器会严格校验Referer的合法性,React Native环境中如果value3是空值、或者和Node.js中传递的Referer内容不一致,可能触发服务器的校验逻辑返回400。
    测试:临时移除Referer头,看请求是否正常,如果恢复正常,再确认value3在React Native环境中的赋值是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:36:52