每当从服务器返回 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
拦截器,我不使用吗?