axios 请求在 Android 上抛出 "Network Error"(Cordova 容器)
axios requests throw "Network Error" on Android (Cordova container)
我已经将 Vue
应用程序打包到 Cordova 容器中,并通过 Android Studio 部署在 Android 上。发送到我的服务器的每个请求都失败并显示消息 Error: Network Error
.
这不是浏览器或iOs的问题。
我研究了这个问题并尝试了各种解决方案:
我已经安装了 cordova-plugin-whitelist
插件并按照 documentation
中的描述进行了配置
我在 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>
- 我在 meta:
中设置了一个 "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';">
我已将我的服务器地址从 localhost:3000
更改为我服务器的 IP 地址,按照此答案中的说明:Network error with axios and android emulator - 我还尝试通过 运行 它一个 local-tunnel 有一个“真正的” API URL - 同样的问题
按照上面帖子中的说明,我还添加了 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
解决了我的问题。
我已经将 Vue
应用程序打包到 Cordova 容器中,并通过 Android Studio 部署在 Android 上。发送到我的服务器的每个请求都失败并显示消息 Error: Network Error
.
这不是浏览器或iOs的问题。
我研究了这个问题并尝试了各种解决方案:
我已经安装了
中的描述进行了配置cordova-plugin-whitelist
插件并按照 documentation我在
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>
- 我在 meta: 中设置了一个
"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';">
我已将我的服务器地址从
localhost:3000
更改为我服务器的 IP 地址,按照此答案中的说明:Network error with axios and android emulator - 我还尝试通过 运行 它一个 local-tunnel 有一个“真正的” API URL - 同样的问题按照上面帖子中的说明,我还添加了 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
解决了我的问题。