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

React Native iOS调用API报错:NSURLErrorDomain Code=-1000 'bad URL'

React Native iOS真机调用AWS EC2 Laravel API报"bad URL"错误排查方案

以下是针对该问题的具体排查和解决方向:

  • 检查URL格式与合法性
    确认目标URLhttps://xxxx.com/api/login无隐藏特殊字符(如全角空格、不可见字符),真机对URL字符校验比模拟器更严格。可在代码中用encodeURIComponent处理路径部分,或直接打印拼接后的完整URL确认格式(比如避免//这类重复斜杠)。同时检查Axios的baseURL配置,确保环境变量切换时没有拼接错误。

  • 验证SSL证书有效性
    AWS EC2上的Laravel服务若使用自签名证书,真机默认会拒绝信任,可能伪装成"bad URL"错误。先在真机Safari中直接访问API地址,确认无证书警告。若存在警告,需替换为正规CA签发的证书(如Let's Encrypt)并确保证书链完整。

  • 排查iOS ATS配置
    若API的SSL配置不符合iOS ATS规范(如TLS版本低于1.2、使用不安全加密套件),真机将拦截请求。可临时在Info.plist中添加ATS例外测试:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    

    若问题解决,需调整后端SSL配置以符合ATS要求,而非长期依赖该例外。

  • 检查Axios请求参数处理
    确认请求参数无未编码的特殊字符,若手动拼接参数到URL需用encodeURI处理。同时检查POST请求的Content-Type是否正确,Axios默认会设置application/json,若手动修改headers可能导致请求格式错误。

  • 排查网络与EC2安全组
    测试真机网络下的DNS解析是否正常,确认域名指向正确的EC2 IP。同时检查EC2安全组规则,确保允许真机所在IP(移动数据或WiFi)访问443端口,模拟器可能因和Mac同网络已被允许,而真机网络IP未在安全组白名单内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:22:33