React Native中Axios请求更新后URL返回Network Error问题排查
我们最近更新了后端URL,前端同步切换后,这个新URL无法正常工作。其他URL都能正常运行,只有这个特定URL出问题——它在Postman里能正常调用,但前端访问时返回「Network Error」。我已经试过Stack Overflow上所有能找到的解决方案了。
相关代码
const getUserCart = async () => { const URL = `${BASE_URL}orders/getcart/`; const config = { headers: { 'Content-Type': 'application/json', Authorization: `Token ${accessToken}`, // + isLogin, }, }; let body = { user: await AsyncStorage.getItem("username") } await axios .post(URL, body, config) .then(res => { if (res.data.cart_detail && res.data.cart_detail[0].items.length == 0) { return; } setNoOfItemsInCart(res.data.cart_detail[0]?.items.length); }) .catch(err => { setNoOfItemsInCart(0); console.log('get user cart error', err); }); };
错误截图

排查方向与解决方法
检查跨域配置(CORS)
Postman不受浏览器同源策略限制,但前端会受影响。确认后端新URL的CORS配置是否正确:是否允许前端域名的请求,是否包含Authorization头、Content-Type头的允许列表,是否允许POST方法。可以在浏览器开发者工具的「Network」面板查看请求响应头,确认是否存在Access-Control-Allow-Origin等CORS相关字段,缺失的话需要后端调整配置。验证URL格式
检查BASE_URL拼接后是否存在重复斜杠(比如BASE_URL结尾是/,拼接后变成//orders/getcart/),这种情况会导致请求地址无效。可以在代码中打印最终的URL值,确认格式是否正确。对齐请求头与Postman配置
把前端发送的请求头和Postman里的配置逐一对比:- 确认
accessToken是否有效、未过期,有没有为空的情况; - 检查
Content-Type是否和后端要求一致,部分后端可能需要application/x-www-form-urlencoded,Postman会自动适配,但前端需要手动调整; - 注意头字段的大小写,虽然HTTP头不区分大小写,但部分后端框架可能对大小写敏感。
- 确认
确认AsyncStorage获取的值
虽然用了await获取username,但要确认返回值是否符合后端要求(比如是否为空、格式是否正确)。可以在body定义后打印user的值,若值不符合预期,后端可能返回异常,导致axios触发网络错误。打印详细错误信息
在catch块里补充打印更详细的错误内容,而不是只打印err:catch(err => { setNoOfItemsInCart(0); console.log('Error details:', { message: err.message, responseData: err?.response?.data, statusCode: err?.response?.status, requestInfo: err?.request }); });这些信息能帮你区分是请求发送失败、后端返回错误还是响应解析异常。
检查环境与代理配置
确认前端开发环境的代理配置是否包含新URL的转发规则,另外排查是否有浏览器插件(广告拦截器、VPN)干扰请求发送,或者网络环境和Postman不一致。
内容的提问来源于stack exchange,提问作者Manju

