我需要将必要的HMAC头附加到请求中。这应该不是很难,但我开始感到沮丧。以下代码有什么问题?我自己运行了实际的http调用,并返回了必要的数据,但在拦截器内它不起作用。
在我添加白名单或黑名单和其他可自定义数据之前,我只想让当前实现工作。这不是关于hmac的问题,而是关于promise的问题。
这个拦截器中的错误在于整个promise行,从$http(...)开始。当我删除此块并像原样使用它(减去promise执行)时,它可以正常工作。一旦我取消注释该行,它就会陷入循环并崩溃Chrome。我已经阅读过的所有地方都说这就是做法,但这显然不起作用。
在我添加白名单或黑名单和其他可自定义数据之前,我只想让当前实现工作。这不是关于hmac的问题,而是关于promise的问题。
这个拦截器中的错误在于整个promise行,从$http(...)开始。当我删除此块并像原样使用它(减去promise执行)时,它可以正常工作。一旦我取消注释该行,它就会陷入循环并崩溃Chrome。我已经阅读过的所有地方都说这就是做法,但这显然不起作用。
function requestInterceptor(config){
var $http = $injector.get('$http');
var deferred = $q.defer();
$http.get(hmacApiEndpoint, {cache: true}).then(function(data){
console.log('HMAC - Success', data)
deferred.resolve(config)
}, function(config){
console.log('HMAC - Error', config)
deferred.resolve(config)
})
return deferred.promise;
}
return {
request: requestInterceptor
};
这是否与Angular的$http承诺与'$q'的实现不同有关?
requestInterceptor
的$http
调用会再次调用requestInterceptor
吗?我怀疑它会递归调用。 - Pankaj ParkarhmacApiEndpoint
之外的URL。而$http
返回相同的承诺+额外的.success
/.error
-因此,它是相同的或兼容的。 - New Dev