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

Cordova构建Android App通过USB调试时请求localhost:9000报404问题

解决Cordova Android App访问localhost:9000出现404的问题

这种情况我之前帮不少开发者排查过,核心问题基本都出在Cordova WebView的配置差异上——毕竟设备Chrome和Cordova内置的WebView是两个独立的环境,权限和规则都不一样。给你几个针对性的排查和解决方向:

1. 检查Content Security Policy(CSP)配置

Cordova的WebView会严格遵循页面的CSP规则,这是最常见的导致404的原因。打开你的index.html,找到<meta http-equiv="Content-Security-Policy">标签,确保其中包含了对localhost:9000的访问许可:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' localhost:9000 data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;">

重点确认localhost:9000出现在default-src或者对应的资源类型规则里,不要漏掉端口号。

2. 验证网络权限与导航规则

  • 网络权限:检查项目根目录下platforms/android/app/src/main/AndroidManifest.xml,确保存在以下权限声明:

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

    虽然Chrome自带网络权限,但Cordova App必须显式声明才能访问网络资源。

  • 导航许可:如果你安装了cordova-plugin-whitelist插件(Cordova默认会包含),需要在config.xml中添加允许访问localhost的规则:

    <allow-navigation href="http://localhost:9000/*" />
    

    测试阶段也可以临时用<allow-navigation href="*" />来排除规则限制,但正式发布前一定要收紧权限。

3. 替换localhost为127.0.0.1或主机局域网IP

有时候Cordova WebView对localhost的解析和Chrome不一致,你可以尝试把请求地址换成http://127.0.0.1:9000。如果是真机USB调试,还可以试试用你电脑的局域网IP(比如192.168.x.x:9000),同时确保电脑和设备在同一个WiFi网络下。

4. 确认端口转发规则并清除App缓存

  • 执行adb forward --list命令,检查是否存在tcp:9000 tcp:9000这条转发规则,如果没有,重新执行adb forward tcp:9000 tcp:9000。
  • 到设备的「应用管理」找到你的Cordova App,清除缓存和数据,然后重新构建运行——旧缓存可能会导致请求异常。

5. 排查插件冲突

如果你安装了其他网络相关的插件(比如自定义WebView插件、代理插件),暂时禁用这些插件,重新构建App测试,看是否是插件干扰了网络请求。

先从CSP和导航规则这两点入手排查,这两个是最容易踩坑的地方,一般都能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:16:06