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

Cordova 8.0中AJAX请求实现及安卓真机404问题排查求助

解决Cordova Android应用真机AJAX请求返回"NOT FOUND"的问题

嘿,我之前在做Cordova项目时也踩过这个真机AJAX请求的坑,结合你已经做的配置,咱们一步步排查剩下的关键问题:

  • 补全Content-Security-Policy(CSP)配置
    你提到设置了CSP meta标签但没写完,这大概率是核心问题之一。CSP规则如果过于严格,会直接阻止AJAX请求的发送。测试阶段可以先用宽松的配置(上线后记得改成限定具体域名):

    <meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content:;">
    

    这里的data: gap: content:是Cordova运行必需的协议,不能漏掉;如果你的服务器是固定域名,也可以把*换成具体的服务器地址,比如default-src https://your-api-domain.com,这样更安全。

  • 别用localhost/127.0.0.1作为服务器地址
    PC模拟器里的localhost指向的是电脑本身,但真机的localhost是它自己的本地环境,根本找不到你的开发服务器。你需要把请求URL改成电脑的局域网IP(比如192.168.1.100),或者服务器的公网域名/IP,确保真机和服务器在同一个网络(比如连同一个WiFi)。

  • 检查AndroidManifest.xml的网络权限
    虽然Cordova默认会添加网络权限,但有时候配置可能被覆盖。打开platforms/android/app/src/main/AndroidManifest.xml,确保里面有这两行:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    这两个权限是AJAX请求能正常发送的基础。

  • 解决Android 9+的明文HTTP限制
    从Android 9(API级别28)开始,系统默认禁止明文HTTP请求,只允许HTTPS。如果你的服务器用的是HTTP,得做额外配置:

    1. 在platforms/android/app/src/main/res/xml目录下创建network_security_config.xml,内容如下:
      <?xml version="1.0" encoding="utf-8"?>
      <network-security-config>
          <base-config cleartextTrafficPermitted="true">
              <trust-anchors>
                  <certificates src="system" />
              </trust-anchors>
          </base-config>
      </network-security-config>
      
    2. 打开AndroidManifest.xml,在<application>标签里添加:
      android:networkSecurityConfig="@xml/network_security_config"
      
  • 确认白名单插件已正确安装
    你在config.xml里加了<access>等配置,但如果没安装cordova-plugin-whitelist插件,这些配置根本不会生效。运行下面的命令检查并安装:

    cordova plugin add cordova-plugin-whitelist
    

    安装完成后一定要重新构建项目:cordova build android,不然配置不会同步到真机包。

  • 用真机调试抓包排查真实请求
    有时候"NOT FOUND"可能是请求路径拼写错误,而不是服务器问题。你可以用Chrome的远程调试功能看真实请求:

    1. 打开Chrome浏览器,输入chrome://inspect/#devices
    2. 把真机通过USB连接到电脑,确保手机开启了USB调试
    3. 在页面里找到你的Cordova应用,点击"inspect",切换到Network标签,就能看到AJAX请求的真实URL、状态码和响应内容,直接定位问题。

内容的提问来源于stack exchange,提问作者Chong Lip Phang

相关产品推荐
方舟 Agent Plan

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

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