如何使用$ resource操作设置自定义标题?

用$ http,我们可以这样做:

var config = { headers: { 'something': 'anything' } }; $http.get('url/to/json', config) .success(function() { // do something… }) 

我想做同样的$资源参考(不工作):

 var config = { headers: { 'something': 'anything' } }; MyResource.get( config, function() { // success // do something… } ); 

相应的服务声明如下:

 .factory('MyResource', function($resource){ return $resource('url/to/json'); }) 

它不工作:configuration对象去的url,而不是在http头。

有没有办法做到这一点 ?

自AngularJS 1.1.1以来, $resource headers可用。 确保你有正确的版本使用。

格式是

 $resource('url/to/json', {}, {headers: { 'something': 'anything' }}); 

上面的看起来不正确。 $资源的第三个参数应该是不同的。 这对我来说似乎更加正确:

 $resource('url/to/json', {}, { get: { method: 'GET', headers: { 'something': 'anything' } } }); 

演示代码

 angular.module('Test',['ngResource']) .controller('corsCtrl', function ($scope, $http, MyResource) { $http.defaults.headers.common['test']= 'team'; //Using $http we can set header also MyResource.get(); }) .factory('MyResource', function($resource) { //Services return $resource('url/to/json'); }) 

JsFiddle DEMO

 see in Request Header 

资源操作中的headers对象既支持其字段的static值,也支持从函数返回的dynamic值。

 $resource('url/to/json', {}, { get: { method: 'GET', headers: { 'header_static': 'static_value', 'header_dynamic': dynamicHeaderVal } } }); function dynamicHeaderVal(requestConfig){ // this function will be called every time the "get" action gets called // the result will be used as value for the header item // if it doesn't return a value, the key will not be present in the header } 

要使用“Content-Type”标题,您可能需要至less为1.4.7+版本指定一个数据主体,这是由于$ http删除标头而没有==='content-type'的数据主体。 见1.4.7 / angular.js中的 # 10255

我只是设置“data:false”来欺骗它,而不指定数据体:

 $resource('url/to/json', {}, { get: { method: 'GET', data: false, headers: { 'something': 'anything' } } });