我已经使用Springboot 1.3.0构建了一个API。它的安全性由Stormpath和Spring Security框架提供。任何客户端都应该使用此API。我指的是手机和网页(AngularJS + HTML5)。 如果没有Stormpath,该网页客户端能够成功将数据发布到API,但是,当Stormpath添加到应用程序时,从客户端到API的所有调用都会失败,并且此错误消息显示在控制台中:" XMLHttpRequest无法加载{ {3}}。预检的响应无效(重定向)" 有没有办法让Stormpath在类似的架构中支持CORS?
客户端(AngularJS)-------远程调用------> Springboot API(休息)
这是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 = {};
}]);
答案 0 :(得分:1)
我们从未尝试过针对CORS的集成。我认为问题来自于如果用户未经过身份验证,Stormpath将重定向到/login
页面,并且CORS不允许这样做。只是为了验证这是实际问题,您可以先尝试对用户进行身份验证,然后在用户通过身份验证后转到http://localhost:8080/api/save
吗?
免责声明,我是Stormpath的贡献者。