美文网首页
ionic4真机 android9.0 http请求失败问题

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

作者: 愤怒的阿昆达 | 来源:发表于2019-11-11 09:06 被阅读0次

    问题:

    由于跨域问题,在浏览器调试中,使用代理可以向后台发送请求;
    在真机调试中不存在跨域,所以把代理去掉,但正常的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移除重新添加后,也不用再重新改了。

    相关文章

      网友评论

          本文标题:ionic4真机 android9.0 http请求失败问题

          本文链接:https://www.haomeiwen.com/subject/qdribctx.html