我创建了一个应用程序,该应用程序使用Ionic Native HTTP成功连接到我们的服务器,并使用Samsung Galaxy J7 Prime操作系统版本棉花糖和尚未在Android Pie下进行的其他测试。出于某种原因,当我在Android Pie下的设备上对其进行测试时,它将无法正常工作,并且我收到了CORS政策问题。有人遇到过类似的问题吗?有没有解决方法?不幸的是,不能在服务器配置中进行修改。我还阅读了一些有关代理的解决方案,但不确定如何实现。
版本: 科尔多瓦-插件-高级-http:2.1.1 ionic-native / http:5.8.0
答案 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>
之后,您可以运行重建应用程序。