AngularJS CORS问题

时间:2015-07-03 13:58:14

标签: angularjs cors angular-http-interceptors

我正在尝试使用跨域,我已经在服务器端添加了过滤器以使CORS与AngularJS一起工作。我使用Spring作为中间件,使用AngularJS 1.3.16作为前端。

下面是我的获取请求代码,它指向不同域的api。

    var deferred = $q.defer();
    $rootScope.url = '/api/v1/agent/user/current/monitors';
    console.log('URL: '+$rootScope.url);

    $http.defaults.useXDomain = true;
    delete $http.defaults.headers.common['X-Requested-With'];

    console.log('GET-ing: ' + $rootScope.baseurl+$rootScope.url);
    $http.get($rootScope.baseurl+$rootScope.url)
    .success(function(data) {
        $scope.myMonitors = data;
        deferred.resolve($scope.myMonitors);

    }).error(function(data) {
        console.log('error');
    });

而且我也在使用拦截器来实现这个Cors请求。

下面是我的拦截器,

    var sessionInjector = {


    request: function(config) {

        console.log('Inside SessionInjector is called: ');
        /* Encryption and authorization calculation*/


        var methods = config.method;
        var url = $rootScope.url;
        console.log('--------url: ' + url);

        var planetext = methods+url+"application/json"+dateString;
        console.log('--------Plain-Text: ' + planetext);
        var encryptText = CryptoJS.HmacSHA256(planetext,         $rootScope.authToken);
        $rootScope.encryptText = encryptText;
        console.log('EncryptText: ' + $rootScope.encryptText);

        /* End of auth calculation*/
        //config.url = $rootScope.baseurl+$rootScope.url;
        config.headers['x-auth-timestamp'] = dateString;
        config.headers['x-auth-timestamp_format'] = "yyyy-MM-dd HH:mm:ss.S";
        config.headers['x-auth-client-id'] = "admin";
        config.headers['Authorization'] = $rootScope.encryptText;

        console.log('config: ' + config);

        return config;
    }
};

当我在执行GET请求时,它给了我500个内部服务器错误,并且标头中的请求方法实际上作为OPTIONS传递。 如果GET或POST请求,我的拦截器将工作并放置自定义标头。我希望每当我发出GET请求时,请求方法都作为GET而不是OPTIONS传递。

我做了很多研究,但没有帮助。任何帮助将不胜感激。

0 个答案:

没有答案