我正在尝试构建简单的AngularJS应用程序,该应用程序通过$ resource消耗api。一切正常,直到我将基本HTTP身份验证添加到我的服务。现在,当我尝试添加http身份验证标头时,我收到了错误消息:
"XMLHttpRequest cannot load http://localhost:8000/api/v1/course. The request was redirected to 'http://localhost:8000/api/v1/course/', which is disallowed for cross-origin requests that require preflight."
但是,当我尝试通过$ http从同一个api获取数据时,身份验证工作正常。 问题在哪里?
这是我的代码:
service.js:
/*cwApp.factory('courseFactory', function($http){
return {
getAllCourses: function(data, status, headers, config){
$http.get('http://localhost:8000/api/v1/course/')
.success(data, status, headers, config)
.error(data, status, headers, config);
}
};
});*/
angular.module('courseModule', ['ngResource'])
.factory('courseResource', function($resource){
return $resource('http://localhost\\:8000/api/v1/course/:id');
});
app.js:
var cwApp = angular.module('cwApp', ['courseModule', 'ngRoute']);
cwApp.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
]);
cwApp.config(function ($routeProvider){
$routeProvider
.when('/', {
templateUrl: 'app/partials/start.html'
})
.when('/allcourses', {
controller: 'AllCoursesController',
templateUrl: 'app/partials/all_courses_view.html'
})
.otherwise({
redirectTo: '/'
});
});
controller.js:
cwApp.controller('AllCoursesController', function ($scope, $http, courseResource){
$http.defaults.headers.common['Authorization'] = 'Basic ' + window.btoa("dmitry" + ":" + "starkapp");
/*courseFactory.getAllCourses(function(data, status, headers, config){
$scope.courses = data["objects"];
console.log('HTTP Status: ' + status);
});*/
courseResource.get(function(data){
$scope.courses = data["objects"];
});
});