2016-02-10 2 views
3

Я создал API с Springboot 1.3.0. Его безопасность обеспечивается системами Stormpath и Spring Security. Предполагается, что этот API будет потребляться любым клиентом, везде. Я имею в виду мобильные телефоны и веб-страницы (AngularJS + HTML5). Без Stormpath клиент этой веб-страницы может успешно отправлять данные в API, однако, когда Stormpath добавлен в приложение, все вызовы от клиента к API завершаются ошибкой, и это сообщение об ошибке отображается в консоли: «XMLHttpRequest не может загрузить http://localhost:8080/api/save. для предполета является недопустимым (перенаправление) " Есть ли способ Stormpath для поддержки CORS в подобной архитектуре?Поддерживает ли Stormpath поддержку CORS для архитектуры Springboot + AngularJS?

Client (AngularJS) ------- удаленный вызов ------> Springboot API (Rest)

Вот служба AngularJS. Как уже упоминалось, вызов службы преуспевает без Stormpath.

app.service('apiService', function($http, $q, CONST){ 

this.save = function(person){ 

    var def = $q.defer(); 

    $http(
      { 
       url:CONST.BASE_URL+'/save', 
       method:'POST', 
       data: person, 
       headers: { 
        'Content-Type':'application/json' 
        } 
      } 
     ).then(

     function success(response){ 
      def.resolve(response.data); 
     }, 

     function error(response){ 
      def.resolve(response.data); 

     }); 

    return def.promise; 
}; 

});

Вот конфигурации из app.module

app.config(['$httpProvider', function($httpProvider){ 


$httpProvider.defaults.headers.common["Accept"] = "application/json"; 
$httpProvider.defaults.headers.common = {}; 
$httpProvider.defaults.headers.post = {}; 
$httpProvider.defaults.headers.put = {}; 
$httpProvider.defaults.headers.get = {}; 

}]);

ответ

1

Мы никогда не пробовали интеграцию для CORS. Я думаю, проблема связана с тем, что Stormpath перенаправляет на страницу /login, если пользователь не аутентифицирован, и это запрещено CORS. Чтобы проверить, что это настоящая проблема, можете ли вы сначала попробовать аутентифицировать пользователя, а затем перейти к http://localhost:8080/api/save после аутентификации пользователя?

Отказ от ответственности, я являюсь спонсором Stormpath.

+0

Я просто сделал это и не сработал. Однако он должен работать, даже если пользователь не аутентифицирован. Есть случаи, когда пользователи могут отправлять информацию через формы, даже если у них нет учетной записи. – blackjack

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