我需要将必要的HMAC标头附加到请求中.这应该不是很困难,但我开始感到沮丧.以下代码有什么问题.我正在进行的实际http调用; 我自己运行了这个调用,它返回了必要的数据.它在拦截器内部不起作用.
我只是希望在为此拦截器添加白名单或黑名单以及其他可自定义数据之前使当前实现正常工作.这不是关于hmac的问题,而是有了承诺.
此拦截器中的错误是整个承诺行从$ http(...)开始.当我删除此块并按原样使用它(减去承诺执行)它工作正常.一旦我取消注释该线就会卡在一个循环中并崩溃铬.我读过的每个地方都说它是如何完成的,但这显然不起作用.
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
};
Run Code Online (Sandbox Code Playgroud)
这是否与angulars $ http promise与'$ q'不同的实现有关?
javascript angularjs angular-http-interceptors angular-promise