Ionic Native HTTP不适用于Anroid 9(Pie)及更高版本?

时间:2019-06-28 01:11:33

标签: android cordova ionic-framework mobile ionic4

我创建了一个应用程序,该应用程序使用Ionic Native HTTP成功连接到我们的服务器,并使用Samsung Galaxy J7 Prime操作系统版本棉花糖和尚未在Android Pie下进行的其他测试。出于某种原因,当我在Android Pie下的设备上对其进行测试时,它将无法正常工作,并且我收到了CORS政策问题。有人遇到过类似的问题吗?有没有解决方法?不幸的是,不能在服务器配置中进行修改。我还阅读了一些有关代理的解决方案,但不确定如何实现。

版本: 科尔多瓦-插件-高级-http:2.1.1 ionic-native / http:5.8.0

2 个答案:

答案 0 :(得分:4)

Android P默认情况下需要HTTPS。这意味着,如果您在应用中使用未加密的HTTP请求,则该应用在所有低于Android P的版本中均可正常运行。

为避免发生此安全异常,请尝试对应用程序代码进行以下更改。

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config"
                    ... >
        ...
    </application>
</manifest>

,然后在res / xml中添加名为network_security_config.xml

的文件

network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        //  Add host of your download URL in below line. 
        //   ie. if url is  "https://www.google.com/search?source=...."
        //   then just add "www.google.com"
        <domain includeSubdomains="true">www.google.com</domain>
    </domain-config>
</network-security-config>

答案 1 :(得分:0)

要解决该问题,您应该对config.xml文件进行更改。

您需要更改的第一件事是'widget'标签,它的外观应与此相似:

<widget id="com.dynamicsoft.app" version="2.2.2" xmlns="http://www.w3.org/ns/widgets" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:cdv="http://cordova.apache.org/ns/1.0">

在那之后,在name ='android'的平台内,您应该添加以下代码:

<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application">
    <application android:usesCleartextTraffic="true" />
</edit-config>

之后,您可以运行重建应用程序。