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。