axios 请求在 Android 上抛出 "Network Error"(Cordova 容器)

axios requests throw "Network Error" on Android (Cordova container)

我已经将 Vue 应用程序打包到 Cordova 容器中,并通过 Android Studio 部署在 Android 上。发送到我的服务器的每个请求都失败并显示消息 Error: Network Error.

不是浏览器或iOs的问题。

我研究了这个问题并尝试了各种解决方案:

  1. 我已经安装了 cordova-plugin-whitelist 插件并按照 documentation

    中的描述进行了配置
  2. 我在 AndroidManifest.xml 文件中设置了权限:

<edit-file mode="merge" parent="/manifest/uses-permission" target="AndroidManifest.xml">
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</edit-file>
  1. 我在 meta:
  2. 中设置了一个 "Content-Security-Policy" 标签
<meta data-n-head="1" http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src *; style-src * 'unsafe-inline';">
  1. 我已将我的服务器地址从 localhost:3000 更改为我服务器的 IP 地址,按照此答案中的说明:Network error with axios and android emulator - 我还尝试通过 运行 它一个 local-tunnel 有一个“真正的” API URL - 同样的问题

  2. 按照上面帖子中的说明,我还添加了 headers:

"Content-Type": "application/x-www-form-urlencoded",
  Accept: "application/json"

还是Error: Network Error。 我几乎可以肯定这与权限有关,但我无法配置其他任何东西来使其工作。

我正在 Android 10.0+ 设备上使用 Cordova 10.

进行测试

Axios 0.20.0.

我找到了解决问题的办法。看起来 Android 默认情况下不允许对 http 的请求,如该线程中所述:

将 localtunnel 更改为 https 解决了我的问题。