ionic4真机 android9.0 http请求失败问题

问题:

由于跨域问题,在浏览器调试中,使用代理可以向后台发送请求;
在真机调试中不存在跨域,所以把代理去掉,但正常的http请求却过不去。

原因:

android9请求要为https的。

解决办法:

打开android的manifest.xml文件,在application标签中添加 android:networkSecurityConfig="@xml/network_security_config":
image.png
然后在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" />
</network-security-config>
image.png

补充:

由于platform有时会remove掉重新add,所以每次都要去重新配network_security_config.xml就显得特别麻烦,后来我在ionic start myApp blank时发现ionic默认在myApp/config.xml里已经把此配置提出来了,看:

<platform name="android">
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
            <application android:networkSecurityConfig="@xml/network_security_config" />
        </edit-config>
        <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
        <allow-intent href="market:*" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        ...
</platform>

可以看到 用myApp/resources/android/xml/network_security_config.xml覆盖platforms/android/app/src/main/res/xml/network_security_config.xml,所以只要把myApp/resources/android/xml/network_security_config.xml此文件修改一次之后就可,即使你的platform移除重新添加后,也不用再重新改了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容