Вызов API REST в ионном режиме
У меня проблемы с выполнением вызовов REST API в моем ионном приложении на мой сервер. Это показывает следующую ошибку.
ionic.bundle.js: 25005 ОПЦИИ https://website.com/api/ionic_test 406 (Недопустимо)
XMLHttpRequest не может загрузить https://website.com/api/ionic_test. Ответ на предпечатную проверку имеет недопустимый код состояния HTTP 406
Код вызова API.
$http.post(API_ENDPOINT.url + '/ionic_test', user).then(function(result) {
if (result.data.status) {
storeUserCredentials(result.data.token);
resolve(result.data.msg);
} else {
reject(result.data.msg);
}
});
ionic.config.json
{
"name": "adminPanel",
"app_id": "",
"proxies": [
{
"path": "/api",
"proxyUrl": "http://website.com/api"
}
]
}
2 ответа
Проблема с вашим сервером. В комментариях вы сказали, что API работает в браузере, но не в вашем приложении. Это потому, что ваш браузер не отправляет OPTIONS
"предполетный" запрос, который делает Ionic.
Вам нужно либо отключить предварительный запрос, либо настроить сервер для правильной его обработки.
Используйте их в конфигурации вашего приложения, чтобы решить проблему предварительной проверки
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
Например.
angular.module('yourApp', [])
.config(function ($stateProvider, $httpProvider, $urlRouterProvider) {
//To solve Response for preflight has invalid HTTP
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
//--------------------------------------
// your routes here
});