2014-09-09 5 views
0

У меня возникают проблемы с Restangular 1.4, отправляющими заголовки авторизации на внешний веб-api, что бросает вызов, если такой заголовок не предоставляется.Restangular 1.4 setDefaultHeaders не работает?

В следующем коде я пытаюсь установить заголовки по умолчанию, чтобы включить основной заголовок auth, но когда я смотрю на Fiddler, он говорит мне, что с самого начала не присутствует заголовок авторизации, поэтому вызов api отклоняется как неавторизованный.

Кто-нибудь знает, если это ошибка в Restangular, или есть ли что-то недостающее в том, как я пытался кодировать заголовок auth?

angular.module('MyAPIService', ['restangular']).factory('MyAPIService', function (Restangular) { 


Restangular.setBaseUrl('http://mywebapi/api/'); 
var encoded = Base64.encode(username + ":" + password); 
Restangular.setDefaultHeaders({ Authorization: 'Basic ' + encoded }); 

return Restangular.one('users', username).get(); 

ответ

0

Попытайтесь установить заголовки в конфигурационном блоке (не уверены в фабриках). Мой код выглядит так:

angular.module('app', ['restangular']) 
    .config(['RestangularProvider', function (RestangularProvider) { 
     // ... some code here 

     RestangularProvider.setDefaultHeaders({ 
      token: 'some-secret-token' 
      // other headers 
     }); 

     // ... some code here 
}]); 

и работает для меня.

1

Оказывается, проблема заключается в том, что заголовок авторизации является нулевым для всех запросов предпросмотра (т. Е.). (чтобы узнать о них, см. раздел «Предполненные запросы» по адресу [https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS). Поэтому, поскольку я смог управлять обработкой Basic Auth API, я заставил API не выдавать проблему 401 для таких запросов перед полетом. Заголовок авторизации присутствовал в запросах без предпросмотра (GET, POST, PUT, DELETE).