CORS работает в Chrome, но не в Safari или на устройстве iOS (приложение IONIC). я попытался добавить некоторые заголовки к моему запросу но без толку
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
'Accept': 'application/json',
'content-type': 'application/json'
Я также пытался отключить ограничение CROSS-ORIGIN в Safari, это сработало хорошо, но не на симуляторе или устройстве IOS.
Итак, как это исправить?
добавить заголовок в веб-API или службу не в приложении
На самом деле я стараюсь больше не устанавливать плагины, поэтому я попытался добавить все, что угодно, в отчаянной попытке больше ничего не устанавливать, но я думаю, что попробую родной HTTP, как сказал @KhurshidAnsari.
собственный плагин работает идеально, потому что я его использую.
Приложение Ionic (android, ios и ionic serve) работает на локальном хосте. По умолчанию веб-API не разрешает запросы из другого источника.
Итак, у вас есть 3 варианта:
Вы можете добавить следующий код в серверный код вашего приложения. header('Access-Control-Allow-Origin: *'); Надеюсь, это поможет вам.
Недавно у меня возникла такая же проблема, но я решил ее, используя cordova-plugin-advanced-http
для устройств Android и iOS.
Установить
ionic cordova plugin add cordova-plugin-advanced-http
npm install @ionic-native/http
Использовать
import { HTTP } from '@ionic-native/http/ngx';
constructor(private http: HTTP) {}
...
this.http.get('http://ionic.io', {}, {})
.then(data => {
console.info(data.status);
console.info(data.data); // data received by server
console.info(data.headers);
})
.catch(error => {
console.info(error.status);
console.info(error.error); // error message as string
console.info(error.headers);
});
Подробнее: см. официальная ссылка
Я сделал это, добавив Access-Control-Allow-Headers:"*"
и заменив * моими пользовательскими заголовками в конфигурации на стороне сервера.
Не работает, когда API находится в службе приложений Azure
«Я пытался добавить некоторые заголовки в свои запросы» — вам нужно добавить эти заголовки в ответ, а не в запрос!