Вызов REST API в ionic

У меня проблемы с выполнением вызовов 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"
    }
  ]
}

person Sallu Salman    schedule 31.01.2017    source источник
comment
поищите CORS, там уже есть немало вопросов и ответов.   -  person Claies    schedule 31.01.2017
comment
на самом деле, 2817 вопросов с No 'Access-Control-Allow-Origin' header is present stackoverflow.com/   -  person Claies    schedule 31.01.2017
comment
@Claies У меня было много подобных вопросов. включение CORS дает мне эту ошибку. вопрос был отредактирован   -  person Sallu Salman    schedule 31.01.2017
comment
это похоже на проблему с сервером, а не на ионную проблему ... что это за сервер? как выглядят маршруты? также ошибка показывает https://; он все еще дает ту же ошибку с http://?   -  person Claies    schedule 31.01.2017
comment
@Claies Когда я беру URL-адрес в браузере, я получаю ответ. Но не в ионном приложении. Вам нужен полный URL-адрес API?   -  person Sallu Salman    schedule 31.01.2017


Ответы (2)


Проблема с вашим сервером. В комментариях вы сказали, что API работает в браузере, но не в вашем приложении. Это потому, что ваш браузер не отправляет OPTIONS "предпечатный" запрос, который делает Ionic.

Вам необходимо либо отключить предварительный запрос, либо настройте свой сервер для правильной обработки.

person Schlaus    schedule 31.01.2017

Используйте их в конфигурации вашего приложения, чтобы решить проблему предварительной проверки.

$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};

Eg.

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
});

person coder    schedule 01.02.2017