使用$ http,我们可以这样做:
var config = { headers: { 'something': 'anything' } };
$http.get('url/to/json', config)
.success(function() {
// do something…
})
我想对$ resource引用(不工作)做同样的事情:
var config = { headers: { 'something': 'anything' } };
MyResource.get(
config,
function() { // success
// do something…
}
);
使用相应的服务声明如下:
.factory('MyResource', function($resource){
return $resource('url/to/json');
})
它不起作用:config对象转到url而不是http头。
有办法吗?
答案 0 :(得分:82)
headers
的{{1}}可用。{p> $resource
确保使用的版本正确。
格式为
$resource('url/to/json', {}, {headers: { 'something': 'anything' }});
[zuma编辑] 以上似乎不对。 $ resource的第三个参数应该是不同的。这对我来说似乎更正确:
$resource('url/to/json', {}, {
get: {
method: 'GET',
headers: { 'something': 'anything' }
}
});
答案 1 :(得分:18)
资源操作中的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
}
答案 2 :(得分:15)
演示代码
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');
})
see in Request Header
答案 3 :(得分:2)
要使用“Content-Type”标头,您可能需要至少为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' }
}
});
答案 4 :(得分:2)
您可以通过访问资源中的config API对象来设置一次性动态标头
演示代码
angular.
.factory('Resource',['$resource',function($resource){return $resource(baseUrl+'/resource/:id', {id: '@_id'}, {
update : {
method : 'POST',
url : baseUrl+'/resource/:id',
headers : {
'custom-header': function(config) {
// access variable via config.data
return config.data.customHeaderValue;
}
},
transformRequest: function(data) {
// you can delete the variable if you don't want it sent to the backend
delete data['customHeaderValue'];
// transform payload before sending
return JSON.stringify(data);
}
}
});
}]);
执行
Resource.update({},{
customHeaderValue: setCustomHeaderValue
},
function (response) {
// do something ...
},function(error){
// process error
});