如何在AngularJs中的工厂内的多个$资源中设置标头

时间:2016-01-04 11:53:24

标签: angularjs angular-resource

我尝试在我的请求中添加自定义标头。但是当我添加时,我收到以下错误,我的REST调用没有执行。

控制台错误

SyntaxError: Unexpected token M
    at Object.parse (native)
    at fromJson  (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.js:1231:14)
at defaultHttpResponseTransform ...

示例代码段

var testModule = angular.module(
        'test',
        [ 'ngAnimate', 'ngTouch', 'ui.grid', 'ngResource', 'ngLoadingSpinner',
                'ui.grid.pagination','ui.select','ui.grid.resizeColumns']).factory(
        'myService',
        function($resource) {

            return {
                Jobs : $resource('/executionjob/jobs', {},{
                     get: {
                            method: 'GET',
                            headers : {
                                'Accept' : 'application/json',
                                'Content-Type' : 'application/json',
                                'Api-Key' : authToken.apiKey()
                            }

                        }   
                }),
                ScheduleJobs : $resource(
                        '/executionjob/scheduleJob', null, {
                            'cancelJobs' : {
                                method : 'PUT'
                            }
                        }),
            };
        });

没有标题REST服务工作正常。但是为了我未来的要求,我想为我的REST端点添加一些安全性。注意:我也知道有一些重复的问题,但我的问题与它们不同,因为我使用的是一个工厂多个$ resources.Please让我知道如何向我的REST调用添加自定义标头,是否有任何方法可以为所有REST请求添加公共标头。

1 个答案:

答案 0 :(得分:1)

是的,你可以添加如下的公共标题:

angular.module('test', [])
.config(['$httpProvider', function($httpProvider) {
  $httpProvider.defaults.headers.common["Accept"] = 'application/json';
  $httpProvider.defaults.headers.common["Content-Type"] = 'application/json';
}])