React Native中axios无法连接Django REST Framework API报网络错误
问题根因
你遇到的ERR_NETWORK报错和Django权限配置、axios本身逻辑无关,核心是本地服务地址映射错误:
- 你在电脑端用Postman访问
127.0.0.1:8000时,这个地址指向你电脑本地运行的Django服务,所以可以正常返回 - React Native代码运行在模拟器/真机环境中,该环境下的
127.0.0.1指向的是模拟器/手机自身,不是你运行Django服务的开发电脑,自然无法建立连接,公网测试接口可以正常访问也能佐证这一点。
分步解决方法
1. 替换请求地址
根据你当前的调试环境,把axios请求里的http://127.0.0.1:8000替换成对应可访问的宿主机地址:
- Android模拟器:直接替换为
http://10.0.2.2:8000,10.0.2.2是Android官方预设的、专门映射开发机本地服务的固定地址 - iOS模拟器/真机调试:先查询开发机的局域网IP:Windows系统执行
ipconfig查看当前连接网络的IPv4地址,macOS系统执行ifconfig查看en0网卡下的inet地址,一般为192.168.x.x格式,最终地址格式为http://[你的局域网IP]:8000,注意调试时手机/模拟器需要和开发机连接同一个WiFi。
2. 修改Django服务配置
地址改对后还需要调整Django的监听和访问规则,否则请求会被拦截:
- 启动Django服务时不要默认绑定127.0.0.1,使用以下命令启动,让服务监听所有网卡的请求:
python manage.py runserver 0.0.0.0:8000
- 打开Django项目的
settings.py,将你用到的访问地址加入允许列表:
ALLOWED_HOSTS = [ '10.0.2.2', '192.168.x.x', # 替换为你自己的开发机局域网IP '127.0.0.1', 'localhost' ]
- 如果项目安装了
django-cors-headers处理跨域,本地开发阶段可以临时添加配置CORS_ALLOW_ALL_ORIGINS = True先验证连通性,后续再收窄允许范围。
3. 安卓端额外配置
Android 9及以上版本默认禁止明文HTTP请求,需要手动放行:
打开RN项目下的android/app/src/main/AndroidManifest.xml文件,在<application>标签中添加属性android:usesCleartextTraffic="true",否则HTTP请求会被系统直接拦截,同样报网络错误。
所有配置修改完成后,重启Django服务、重新编译安装RN应用即可正常连通接口。
内容的提问来源于stack exchange,提问作者Javier Rf
相关产品推荐
相关产品推荐

