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

Posted

技术标签:

【中文标题】Ionic Native HTTP 不适用于 Android 9 (Pie) 及更高版本?【英文标题】:Ionic Native HTTP does not work for Anroid 9 (Pie) and up? 【发布时间】:2019-06-28 01:11:33 【问题描述】:

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

版本: 科尔多瓦插件高级-http:2.1.1 离子原生/http: 5.8.0

【问题讨论】:

见enter link description here 是的,刚刚看到了对链接 SO 主题的简短解释的答案。谢谢! 【参考方案1】:

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>

【讨论】:

谢谢!这个解决方案奏效了。这是我第一次真正听说 Android 的安全性发生了这种变化。 您可以更改 /resources/android/xml/network_security_config.xml 文件并在其中添加 www.google.com 它将更新文件 谢谢!你刚刚拯救了我的一天!【参考方案2】:

要解决这个问题,您应该更改 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>

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

【讨论】:

以上是关于Ionic Native HTTP 不适用于 Android 9 (Pie) 及更高版本?的主要内容,如果未能解决你的问题,请参考以下文章

ionic-native/http 发出错误“NullInjectorError: No provider for HTTP!”

后台地理定位插件不适用于 Android 版本

Cordova 插件不适用于 ionic

ionic 3 的内页不适用于 ionic 3 中的脚本或外部自定义 jQuery 插件

Ionic BarcodeScanner 不适用于 ios

Ionic2 Google Maps JS SDK 不适用于 Ionic View