我的网站启用了CORS。我可以使用邮递员检查我的链接,并且它工作正常。
当我使用浏览器中的这些链接时,我正在开发的Ionic应用程序也可以正常工作。我在Android手机中运行该应用程序的那一刻,它停止工作。以下是我收到的错误消息。
{
"headers": {
"normalizedNames": {},
"lazyUpdate": null,
"headers": {}
},
"status": 0,
"statusText": "Unknown Error",
"url": "http://subdomain.mydomain.com/DataServer/Country",
"ok": false,
"name": "HttpErrorResponse",
"message": "Http failure response for http://subdomain.mydomain.com/DataServer/Country: 0 Unknown Error",
"error": {
"isTrusted": true
}
}
请注意,我要从中获取数据的站点是http,而不是https。当我尝试从https获取数据时,它可以工作。我尝试从以下位置获取数据
https://jsonplaceholder.typicode.com/todos/1
代码
this.http.get('https://jsonplaceholder.typicode.com/todos/1').subscribe((response) => {
alert("Success: " + JSON.stringify(response));
}, (err) => {
alert("Error: " + JSON.stringify(err));
});
该问题似乎Ionic(Cordova)阻止了来自http网站的http.get请求。(非安全)。有没有方法可以覆盖它?
这不是cordova问题,如果您在小于28的版本上进行测试,则问题出在您的版本中,然后它将正常运行,但是对于大于28的版本,出于安全原因,如果Android的请求不是https,则它会禁用任何请求,以便克服了这个问题,您可以从任何ssl网站上获得免费的ssl并将其放在您的域中,或者将其放置在您的域之前,例如https://sslspecificsitename?site=http://yoursite.com。因此,它的作用是伪造anddroid请求,该请求是https,然后重定向并将该请求发送到您的网站。但是第一个更好,因为您在链接前面编写的任何网站都可能被其所有者停止或删除,因此您的应用程序将提示您访问免费的SSL。