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

React Native中Axios请求存在的路由返回404问题求助

问题描述

在React Native应用中发起如下POST请求:

axios.post(`http://${ipAddress}:3001/api/v1/customers/orders/create`, payload)

已确认笔记本上运行的Node服务器存在该路由,且ipAddress为笔记本IP。该请求在Postman中可正常响应,但在RN中发起时服务器无处理,RN返回404错误,错误详情如下:

", "_responseType": "", "_sent": true, "_subscriptions": [], "_timedOut": false, "_trackingName": "unknown", "_url": "http://myIP/api/v1/customers/orders/create", "readyState": 4, "responseHeaders": {"Access-Control-Allow-Origin": "*", "Connection": "keep-alive", "Content-Length": "170", "Content-Security-Policy": "default-src 'none'", "Content-Type": "text/html; charset=utf-8", "Date": "Sun, 10 Sep 2023 16:16:29 GMT", "Keep-Alive": "timeout=5", "X-Content-Type-Options": "nosniff", "X-Powered-By": "Express"}, "responseURL": "http://myIP:3001/api/v1/customers/orders/create", "status": 404, "timeout": 0, "upload": {}, "withCredentials": true}, "status": 404, "statusText": undefined}

明明路由存在,为何RN请求返回404?

可能的原因及解决方案
  • 请求方法不匹配:检查Express服务器的路由定义是否为app.post(...),而非app.get(...)或其他方法。Postman可能自动适配请求方法,但RN中明确使用POST,若服务器路由方法不匹配会直接返回404。
  • Payload格式/内容差异:对比Postman和RN发送的payload,检查是否存在格式不一致(比如Postman用JSON格式,RN发送的是FormData或未正确序列化的对象)。可在RN请求中显式设置Content-Type,确保和Postman一致:
    axios.post(url, payload, {
      headers: { 'Content-Type': 'application/json' }
    })
    
  • IP/端口拼接异常:错误信息里的_url字段显示http://myIP/api/v1/customers/orders/create(缺少端口3001),但responseURL又包含端口,可能是ipAddress变量拼接时出现异常。直接硬编码IP+端口测试,排除变量解析问题:
    axios.post('http://192.168.x.x:3001/api/v1/customers/orders/create', payload)
    
  • Express中间件顺序错误:虽然响应头有Access-Control-Allow-Origin: *,但需确保路由定义在CORS中间件之后,否则请求可能被拦截后返回默认404页面,而非路由的正常响应。
  • RN调试代理干扰:若开启了RN Debugger或系统代理,可能导致请求被转发到错误地址。关闭调试代理,直接在设备上测试请求是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 05:23:37