我为我的电子商务应用程序(内置Laravel)构建了一个小API,因此我可以将它与我在Angular中构建的前端一起使用。我将API放在子域上并添加Access-Control-Allow-Origin
标头以允许来自api源的调用。
问题是Angular似乎正在从请求中删除所有标头,因此它永远不会看到我的CORS标头。我的REST API客户端正确查看标头。我尝试使用基本的XMLHttpRequest,它正确地看到了标题。但是在Angular中,查看来自$http.get()
的回复,我无法看到CORS标题,或者我尝试过的任何其他标题。
这是我的服务的样子:
angular.module('SFAdmin').factory('Category', function($http){
$http.defaults.useXDomain = true;
var baseUrl = 'http://api.example.com/categories';
return {
query: function(){
return $http.get(baseUrl);
},
get: function(id){
return $http.get(baseUrl + '/' + id);
},
create: function(data){
return $http.post(baseUrl, data);
},
update: function(data){
return $http.put(baseUrl + data.id, data);
},
delete: function(id){
return $http.delete(baseUrl + '/' + id);
},
trash: function(){
return $http.get(baseUrl + '/trash');
}
}
});
我的类别控制器:
angular.module('SFAdmin').controller('CategoriesIndexController', function(Category, $scope, $location){
Category.query().success(function(data){
$scope.categories = data;
}).error(function(d, s, h){
console.log(d, s, h());
});
});
我的api路线发送了这个:
$app->get('/categories/', function(){
$content = (new App\Http\Controllers\CategoryController())->index(); // index() gets all categories.
return response($content)
->header('Access-Control-Allow-Origin', '*');
});
如何让Angular正确查看传入的标题?