这应该很容易,但最终是行不通的:(。 我们使用 Angular 1.4.3 ,我们尝试在某些API调用之前添加Authorization标头值。
长话短说,有一家工厂:
angular.module('xxx').factory('factory', function ($resource, addBasicAuth) {
return $resource(baseUrl, {}, {
query: {method: 'GET', isArray: true, transformRequest: addBasicAuth},
...
});
});
addBasicAuth
如下:
angular.module('xxx').factory('addBasicAuth', function ($rootScope) {
return function (data, headersGetter) {
var user = ($rootScope.user);
headersGetter().Authorization = 'Basic ' + Base64.encode(user.username + ':' + user.password);
return angular.toJson(data);
};
});
理论上一切都应该可以正常工作,但由于我不理解的原因,requestHeader不受影响(在开发人员工具/网络 - Chrome中查看)。
我做错了什么?谢谢!
答案 0 :(得分:1)
我的同事帮我解决了以下问题;
而不是transformRequest
我们使用headers
,它是这样的:
angular.module('xxx').factory('factory', function ($resource, addBasicAuth) {
return $resource(baseUrl, {}, {
query: {
method: 'GET',
isArray: true,
headers: addBasicAuth()
},
...
});
});
并且addBasicAuth
现在是工厂函数:
angular.module('xxx').factory('addBasicAuth', function ($rootScope) {
return function () {
var user = ($rootScope.user);
return {'Authorization': 'Basic ' + Base64.encode(user.username + ':' + user.password)};
};
});
像魅力一样。