Tôi đã tạo một trình chặn trong ứng dụng phát hiện mất mát phiên (máy chủ gửi một HTTP 419). Trong trường hợp này, tôi cần phải yêu cầu một phiên mới từ máy chủ, và sau đó tôi muốn gửi lại yêu cầu ban đầu một cách tự động.
Có lẽ tôi có thể lưu yêu cầu trong bộ chặn đánh chặn yêu cầu và sau đó gửi lại, nhưng có thể có giải pháp đơn giản hơn.Làm cách nào để gửi yêu cầu lại trong bộ chặn phản hồi?
Lưu ý rằng tôi phải sử dụng một dịch vụ web cụ thể để tạo phiên.
angular.module('myapp', [ 'ngResource' ]).factory(
'MyInterceptor',
function ($q, $rootScope) {
return function (promise) {
return promise.then(function (response) {
// do something on success
return response;
}, function (response) {
if(response.status == 419){
// session lost
// create new session server-side
// Session.query();
// then send current request again
// ???
}
return $q.reject(response);
});
};
}).config(function ($httpProvider) {
$httpProvider.responseInterceptors.push('MyInterceptor');
});
Một lưu ý cho bất kỳ ai nhìn vào điều này ngày hôm nay: Cú pháp của Angular cho interceptor đã thay đổi kể từ v1.1.x. Các giải pháp cho câu hỏi là tương tự, nhưng người ta sẽ thấy ở đây cho cú pháp mới hơn: https://docs.angularjs.org/api/ng/service/$http#interceptors –
Đây là một phiên bản đơn giản của điều này: http://stackoverflow.com/a/31965945/651556 – Sushil