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 文件并在其中添加要解决这个问题,您应该更改 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!”