2016-11-23 2 views
0

У меня есть ионное приложение (используется угловой js). Я пытаюсь позвонить на мой localserver (node ​​express), используя restangular api (также попытался использовать $ http.get).

я установить базовый URL, как

RestangularProvider.setBaseUrl('https://localhost:3000'); 

Я перехватчик определенный добавить пользовательский заголовок:

interceptors.serialNumber = function (element, operation, what, url, headers, query) { 
    return { 
    headers: angular.extend({ 
     'x-serialnumber': deviceStore.serialNumber 
    }, headers) 
    }; 
}; 

Я попытался следующий restangular вызов:

Restangular.one('Admin').get() 
    .then(function (data) { 
     console.log(data); 
     }); 
    }, function (error) { 
     console.log(error); 
    }); 

и следующее использование вызова $ http:

$http({ 
     method: 'GET', 
     url: 'https://localhost:3000/Admin', 
     headers: { 
      'Content-Type': 'application/json', 
      'x-serialnumber': '000000000' 
     } 
     }).then(function (data) { 
     console.log(data); 
     }, function (error) { 
     console.log(error); 
     }); 

Я всегда получаю условие ошибки, когда data = null | status = -1 | statusText = ""

Я не вижу ЛЮБОГО запроса на стороне сервера. Он немедленно переходит к делу об отказе.

Если я удаляю пользовательский заголовок, я вижу запросы на стороне сервера и получаю хороший ответ (т. Е. 200).

На стороне сервера я использую модуль cors: var app = express(); app.use (cors());

+0

Все доказательства указывают на deviceStore.serialNumber, генерирующий исключение нулевого указателя (deviceStore не определено) – Andonaeus

+0

Благодарим за отзыв Andonaeus. Я подтвердил, что он не является нулевым. Также в случае $ http я жестко кодирую значение заголовка (x-serialnumber) и получаю ту же ошибку, что и прямоугольный случай – brent

+1

Если вы используете CORS, добавили ли вы пользовательский заголовок в список разрешенных заголовков? – Amy

ответ

0

Ну что мне нужно было сделать следующее:

$http({ 
    method: 'GET', 
    url: 'https://example.com/DUMMY' 
}).then(function successCallback(response) { 
    $http({ 
    method: 'GET', 
    url: 'https://example.com', 
    headers: { 
     'x-serialnumber': deviceStore.serialNumber 
    } 
    }).then(function successCallback(response) { 
    console.log('SUCCESS'); 
    }, function errorCallback(response) { 
    console.log('FAILURE'); 
    }); 
}, function errorCallback(response) { 
    console.log('FAILURE'); 
}); 

В сущности, мне нужно отправить «предварительный» GET запрос с NO пользовательского заголовка. Запрос GET может быть любым на моем узловом сервере. После этого «предварительный« GET-запрос, я мог бы выполнить запрос GET с настраиваемым заголовком в нем.

В частности на стороне сервера, я вижу следующее:

GET /DUMMY 200 10ms - 2b 
OPTIONS/204 1ms 
GET/200 13ms - 1.03kb 

Без выполнения этого «предварительного» получить запрос, варианта запросить в моем Ионном App будет Прервать - код состояния = -1 - обычно означает, что запрос был прерван и никогда не покинет сторону Ionic App.

Я до сих пор не понимаю, зачем мне это нужно »предварительный« GET запрос, но это работает для меня.

Смежные вопросы