AngularJS $资源中的基本HTTP身份验证

时间:2014-11-20 10:26:31

标签: javascript angularjs rest http authentication

我正在尝试构建简单的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"];
    });

});

0 个答案:

没有答案