我有一个ionic 4应用程序,它调用.NET Core后端api。 它在chrome浏览器上正常工作,但是当我在android设备上运行apk时,响应为:
{"headers":{"normalizedNames":{},"lazyUpdate":null,"headers":{}},"status":0,"statusText":"Unknown Error","url":null,"ok":false,"name":"HttpErrorResponse","message":"Http failure response for (unknown url): 0 Unknown Error","error":{"isTrusted":true}}
关于标题,我附加了以下选项:
const httpOptions = {
headers: new HttpHeaders({
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8" ,
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Origin, Content-Type, X-Auth-Token, Accept, Authorization, X-Request-With",
"Access-Control-Allow-Credentials" : "true",
"Access-Control-Allow-Methods" : "GET, POST, DELETE, PUT, OPTIONS, TRACE, PATCH, CONNECT"
})
};
我已经安装了插件: cordova-plugin-ionic-webview
并使用来自“ @ angular / common / http”的HttpClient
我的API远程托管,未使用ssl证书!
我搜索了所有解决方案,但没有一个解决我的问题
答案 0 :(得分:11)
我遇到了同样的问题,以下是我的条件:
我尝试了多种方法来解决此问题。我已经确定这不是CORs问题,因为我已经处理了它。
那么如何解决类似问题。您只需添加一行,即
android:usesCleartextTraffic="true"
在清单文件中,即
[yourProject]/android/app/src/main/AndroidManifest.xml
你很好。
答案 1 :(得分:1)
某些事情我会建议您检查:
1)在服务器端启用CORS
2)如果您的API不是https,请确保android webview没有阻止流量。强制启用
cleartextTraffic
,默认情况下禁用。如下所示在您的应用中添加安全配置。设置参考here
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:usesCleartextTraffic="true" />
</edit-config>
答案 2 :(得分:1)
我遇到了这个问题,我在API中添加了cors条件并更改了WebViewer版本,但错误仍然存在。您可以通过修改运行我的api的服务器的IP地址来解决它。
/resources/android/xml/network_security_config.xml
答案 3 :(得分:1)
4 Possible Case
1: Check your Internet connection
2: Cors must be enabled from Backend
3: android:usesCleartextTraffic="true" must be added in config.xml and android manifest file in the resource folder
4: Backend IP or domain should be configured in /resources/android/xml/network_security_config.xml
答案 4 :(得分:0)
最后,经过两天的努力,我可以解决问题! 我将API调用从'@ angular / common / http'迁移到了本地http'@ ionic-native / http / ngx' 带有此标题:
// create headers data
const headers = {
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
'Accept': 'application/json, text/plain',
"cache-control": "no-cache",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Origin, Content-Type, X-Auth-Token, Accept, Authorization, X-Request-With, Access-Control-Request-Method, Access-Control-Request-Headers",
"Access-Control-Allow-Credentials" : "true",
"Access-Control-Allow-Methods" : "GET, POST, DELETE, PUT, OPTIONS, TRACE, PATCH, CONNECT",
};
对我来说不利,目前,我必须在真实设备上进行测试。
答案 5 :(得分:0)
localhost不支持任何android应用。如果您尝试使用localhost来访问API,则android会认为localhost 0.0.0.0:
答案 6 :(得分:-1)
下面的改变终于对我有用了 将 API 端点从 http://localhost:7071/data 更改为 http://192.168.1.11:7071/data, 其中 192.168.1.11 是主机的本地 IP 地址。