Ionic http 从具有 CORS 设置的非 ssl 网站获取
Ionic http get from non-ssl websites with CORS settings
我的网站启用了 CORS。我可以使用 Postman 检查我的链接,它运行良好。
当我从浏览器使用这些链接时,我正在开发的 Ionic 应用程序也工作正常。 运行 android phone 中的应用程序停止工作的那一刻。以下是我收到的错误信息。
{
"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。所以它的作用是伪造android请求,请求是https,然后重定向并向您的网站发出请求。但第一个更好,因为您在 link 前面写的任何网站都可能被其所有者停止或删除,因此您的应用程序将停止运行,所以去获得免费的 ssl。
我的网站启用了 CORS。我可以使用 Postman 检查我的链接,它运行良好。
当我从浏览器使用这些链接时,我正在开发的 Ionic 应用程序也工作正常。 运行 android phone 中的应用程序停止工作的那一刻。以下是我收到的错误信息。
{
"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。所以它的作用是伪造android请求,请求是https,然后重定向并向您的网站发出请求。但第一个更好,因为您在 link 前面写的任何网站都可能被其所有者停止或删除,因此您的应用程序将停止运行,所以去获得免费的 ssl。