Ionic v4 withCredentials true дает мне ошибку cors

Вызов API Ionic v1 работает с withCredentials true, но не работает код ionic v4, что приводит к ошибкам управления доступом

Ионный код v1

vm.getUser = function (email, password) {
  return $http({
  method: 'POST',
   crossDomain: true,
  dataType: "json",
  url: 'http://localhost:3000/api/login/1',
  contentType: "application/json",
  xhrFields: {
    withCredentials: true
  },
  data: {"email": email, "password": password}
});
 };

**работающий **

 getUser(){
this.http.post(this.url, 
 {"email": email,      "password": password},
{headers:{Content-Type:'application/json'}, withCredentials:true});

Не работает


person Surya Teja    schedule 22.09.2019    source источник


Ответы (1)


HTTPS не http

Вы должны использовать https для своего URL-адреса, если он его поддерживает, иначе он не будет работать на современных устройствах Android.

Они начали блокировать его несколько версий назад, если вы не добавите дополнительные настройки безопасности, чтобы разрешить это.

CORS-ошибка

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

Однако решение находится не в вашем приложении. Вам нужно изменить сервер, на котором работает API, он должен разрешить политику cors.

Вам следует прочитать официальную документацию в качестве отправной точки, но фактическое решение будет зависеть от того, как вы написали логин API.

Можно ли избежать CORS?

Ознакомьтесь с здесь:

Веб-представления применяют CORS, поэтому важно, чтобы внешние службы правильно обрабатывали запросы между источниками. Дополнительные сведения см. на enable-cors.org и MDN.

Если CORS не реализован на сервере, существует собственный подключаемый модуль, который выполняет HTTP-запросы на собственном уровне в обход CORS.

person rtpHarry    schedule 22.09.2019
comment
Спасибо за ответ, 1. Из-за некоторых проблем с сертификатами SSL в бэкэнде мы не можем использовать https. 2. У меня уже развернут сервер, поэтому есть ли шанс, что я попытаюсь решить проблему только со стороны клиента. - person Surya Teja; 22.09.2019
comment
Я реализовал с помощью собственного http-плагина. Как отправлять куки на последующие запросы. Заменить withCredentials true в собственном плагине? Я не могу найти. - person Surya Teja; 22.09.2019