Ionic http получить с веб-сайтов без SSL с настройками CORS

У меня есть мой веб-сайт с CORS. Я могу проверить свои ссылки с помощью Postman, и он работает отлично.

Приложение 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.get с веб-сайтов http.. (Незащищенный). Есть ли способ переопределить это?


person iShah    schedule 31.03.2020    source источник
comment
Вы используете версию Android 28+?   -  person Mostafa Harb    schedule 31.03.2020
comment
ДА версия API 29   -  person iShah    schedule 31.03.2020


Ответы (1)


Это не проблема кордовы, проблема в вашей версии, если вы протестируете ее на версии менее 28, она будет работать нормально, но для версии более 28 андроид отключит любой запрос, если это не https, по соображениям безопасности, чтобы преодолеть это проблема, вы можете либо получить бесплатный ssl с любого ssl-сайта и разместить его на своем домене, либо на их веб-сайте, который вы поместили перед своим доменом, например https://sslspecificsitename?site=http://yoursite.com. Таким образом, его роль состоит в том, чтобы подделать запрос Android, который является https, а затем перенаправить и сделать запрос на ваш сайт. Но первое лучше, так как любой веб-сайт, который вы пишете перед своей ссылкой, может быть остановлен или удален его владельцем, поэтому ваше приложение будет остановлено, так что идите и получите бесплатный ssl.

person Mostafa Harb    schedule 31.03.2020
comment
Я добавил SSL-сертификат на сервер и все заработало!!! Спасибо.. - person iShah; 02.04.2020