タグ付けされた質問 「interceptor」

3
異なるJSライブラリによって作成されたすべてのAJAXリクエストをインターセプトする方法
私はさまざまなJSライブラリ(AngularJS、OpenLayersなど)を使用してWebアプリを構築しており、ログに記録されたユーザーセッションが期限切れになった場合(応答が401 Unauthorizedステータスで戻る)にリダイレクトできるように、すべてのAJAX応答をインターセプトする方法が必要ですログインページへ。 AngularJSがinterceptorsそのようなシナリオを管理するために提供していることを知っていますが、OpenLayersリクエストへのそのような注入を実現する方法を見つけることができませんでした。だから私はバニラJSアプローチを選びました。 ここで私はこのコードを見つけました... (function(open) { XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { this.addEventListener("readystatechange", function() { console.log(this.readyState); // this one I changed }, false); open.call(this, method, url, async, user, pass); }; })(XMLHttpRequest.prototype.open); ...私はそれを適応させ、期待どおりに動作するように見えます(最後のGoogle Chromeでのみテストしました)。 XMLHTTPRequestのプロトタイプを変更するときに、これがどれほど危険であるか、または深刻なパフォーマンスの問題を引き起こす可能性があるのか​​と思います。そしてところで、有効な代替案はありますか? 更新:リクエストが送信される前にインターセプトする方法 前のトリックは大丈夫です。しかし、同じシナリオで、リクエストが送信される前にヘッダーを挿入したい場合はどうでしょうか?以下をせよ: (function(send) { XMLHttpRequest.prototype.send = function(data) { // in this case I'm injecting …

1
Angularアプリケーションに複数のHTTPインターセプターを追加する
複数の独立したHTTPインターセプターをAngular4アプリケーションに追加するにはどうすればよいですか? providers複数のインターセプターで配列を拡張して、それらを追加しようとしました。ただし、実際に実行されるのは最後の1つだけであり、Interceptor1無視されます。 @NgModule({ declarations: [ /* ... */ ], imports: [ /* ... */ HttpModule ], providers: [ { provide: Http, useFactory: (xhrBackend: XHRBackend, requestOptions: RequestOptions) => new Interceptor1(xhrBackend, requestOptions), deps: [XHRBackend, RequestOptions], }, { provide: Http, useFactory: (xhrBackend: XHRBackend, requestOptions: RequestOptions) => new Interceptor2(xhrBackend, requestOptions), deps: [XHRBackend, RequestOptions] }, …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.