长话短说。我真的不是AngularJS大师。我们的网站从1.3升级到1.5。这一件事正在打破。AngularJS 1.3到1.5的transformRequest破解了,解决了我的具体情况?
我们使用通过transformRequest在一个名为“API”工厂注入HTTP头:
.factory('api', function($resource) {
function add_auth_header(data, headersGetter) {
var headers = headersGetter();
headers['Authorization'] = ('Basic ' + btoa(data.username +
':' + data.password));
}
// defining the endpoints.
return {
auth: $resource('/api/v1/auth/', {}, {
login: {method: 'POST', transformRequest: add_auth_header},
logout: {method: 'DELETE'},
}),
后来在同一文件中,这被称为像这样:
.service('auth', function($cookies, $rootScope, api) {
this.user = null;
this.login = function(credentials) {
var log = api.auth.login(credentials);
log.$promise.then(function(data){
// on good username and password
this.user = data;
});
正如你可以看到,它使用凭据调用api.auth.login。我已经证实转换请求正在被调用,头文件正在被headersGetter()正确提取,并且挂起头文件[]对象不再像在1.3中那样改变它。 Fiddler验证该请求不再像在1.3中那样拥有授权标头,并且获取请求的Django服务器也同意。
我已经在几个地方看到了1.4中的transformRequest功能“爆发”,但是这些帖子总是处于发出$ http请求的上下文中,而不是通过工厂提供api服务,对于像我这样的AngularJS newb非常有意义。我不知道从哪里开始改变Authorization的注入方式。
任何人都可以指点我吗?
说真的,没有评论为什么downvote?这是一个完全合法的问题。 –