每当从服务器返回 401“未经授权”响应时,我都会使用angular-http-auth显示登录对话框。
由于我很酷,我还尝试在我的服务中反序列化响应对象。例如,如果一个服务请求 acar并且响应是{make: Honda, model: Civic},我尝试将它反序列化为一个Car使用transformResponse.
例如:
getCar: function() {
return $http.get('/api/car', {
method: 'GET',
transformResponse: function(data, headers) {
var c = angular.fromJson(data);
return new Car(c);
}
});
}
这不适用于angular-http-auth。如果响应是 401 Unauthorized,您将收到一个 javascript 错误。transformResponse这是因为即使响应是 401 ,Angular 也会尝试运行该代码。
事实证明,$http拦截器(这是angular-http-auth使用的)在transformResponse代码之后运行。transformResponse这是一个大问题,因为如果服务器响应是 401(不会有任何 401 data),那么这些代码都不会起作用
这对其他人来说是个问题吗?你是怎么解决的?transformResponse如果我使用$http拦截器,我不使用吗?