ich den folgenden Code zur Zeit bin mit einer Anfrage erneut auslösen, die ein 401 aus meiner API gibt:Wie mehrere Antworten in Angular responseError Abfangjäger zu handhaben
responseError: function(rejection) {
var authData = localStorageService.get('authorizationData');
if (rejection.status === 401 && authData) {
var authService = $injector.get('authService');
var $http = $injector.get('$http');
̶v̶a̶r̶ ̶d̶e̶f̶e̶r̶r̶e̶d̶ ̶=̶ ̶$̶q̶.̶d̶e̶f̶e̶r̶(̶)̶;̶
var promise = authService.refreshToken();
return ̶d̶e̶f̶e̶r̶r̶e̶d̶.̶ promise.then(function() {
return $http(rejection.config);
});
}
return $q.reject(rejection);
}
Dies funktioniert für 1 Anfrage groß, aber es doesn‘ Es scheint zu funktionieren, wenn ich zwei 401s von einer einzelnen Seite zurückbekomme, zum Beispiel wenn die Seite mit zwei API-Aufrufen geladen wird, um verschiedene Abschnitte zu füllen. Wie kann ich meinen Interceptor dazu bringen, mehrere verzögerte Anrufe erneut auszuführen?
Auch sollte der Abfangjäger nicht für jeden 401 einzeln feuern? Nicht ideal, es würde mehrere Auffrischungsaufrufe auf einer einzelnen Seite verursachen, aber eine Verbesserung von fehlenden Daten aufgrund eines Anrufs, der nicht erneut ausgelöst wird.
Screenshot:
* sollte nicht die Abfangjäger Feuer für jede 401 individuell * - es sollte. Wenn dies nicht geschieht, geben Sie http://stackoverflow.com/help/mcve an. Eine Plunk/Geige, die das Problem reproduzieren kann, kann helfen. – estus
Sie erhalten zwei 401, weil Sie parallel zwei XHRs mit veralteten Token abfeuern. Welches Problem verursacht das? Erhält es schließlich gültige Daten für beide XHRs? – georgeawg
@georgeawg Das Verhalten, das ich sehe, ist zwei Async-Anfragen verwendet, um die Seite Feuer auszufüllen, beide 401, die zweite (?) Anfrage wird rethrown und sagen, ich habe eine Auswahl pro Anruf, die erste Auswahl ist leer, die zweite hat Daten. – RandomUs1r