問題タブ [angular-http-interceptors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
240 参照

angularjs - AngularJS で 2 つの別個の $http サービス インスタンスを使用するには?

$http呼び出しによって送信されたデータを に保存する angularjs サービスを実装していますlocalStorage。そのために、リクエスト インターセプタを使用しているため、http リクエストが 経由$httpで送信されるたびに、データが に保存されlocalStorageます。以下は、インターセプターの私のコードです。

上記のインターセプターを機能させるには、それを のinterceptors配列に登録する必要があり$httpProviderます。私はそれを達成するためにこれを行いました、

問題

OfflinkJSこれで、モジュールを別のモジュールで使用すると、すべての$http呼び出しがインターセプターを通過します。しかし、$httpサービスによって送信されたいくつかのリクエストでインターセプターを使用し、他のいくつかのリクエストでNOTを使用したいと思います。

サービスはシングルトンであるため$http、アプリケーションの別々の場所でサービスの 2 つのインスタンスを使用する方法がわかりません。これを達成する方法はありますか?

私はこの質問をしましたが、循環依存の問題に実際に対処しているようです

AngularJS $http サービスの 2 つのインスタンスが必要ですか?

0 投票する
1 に答える
2422 参照

angularjs - Angular でリクエスト ヘッダーを設定およびオーバーライドする正しい方法

使用している認証方法のために、すべてのリクエストにグローバル http ヘッダーを設定する必要があります。SSO アプローチを使用してユーザーを認証するための Identity Server があります。これまでのところ、インターセプターを使用してヘッダーをグローバルに設定していました。ただし、認証方法を使用しないサードパーティ API にリクエストを送信する必要がある場合があります。インターセプターによって構成された認証ヘッダーをオーバーライドするにはどうすればよいですか? この問題に対する推奨されるアプローチはありますか?

0 投票する
1 に答える
1254 参照

javascript - AngularJS アプリとインターセプターを別のファイルに分ける方法

$http インターセプターとアプリ構成を別々のファイルに分離することに問題があります。これは私が試したことです:

app.js

authService.js

login.js

authService.js のコードを app.js ソースコードの直下に配置するとすべて問題ありませんが、別のファイルに配置すると、エラーは発生しませんが、インターセプターは機能しません。

誰でもこれを手伝ってもらえますか?

0 投票する
1 に答える
229 参照

angularjs - Cordova での Angular の動作の違い

john papas styleguideに近いいくつかのモジュールを使用して角度のあるアプリを構築しています。それに続いて、独自のルート定義を持ついくつかの独立したモジュールと、インターセプターを持つ他のモジュールがあります。私の問題は、Cordova / Androidで実行すると、状態定義をメインモジュールに配置したときにのみ機能するように見えることです。私のブラウザで仕事。誰かがこの問題を解決しましたか?

たとえば、これはローカル ブラウザーと cordova を搭載したデバイスの両方で機能します。

これはローカルブラウザでのみ機能します(メインモジュールは上記と同じ):

エラーは、ナビゲーションで状態が見つからなかったことを示しています。

0 投票する
1 に答える
1091 参照

angularjs - インターセプト リクエストとペイロードの変更

次のようなサービスがあります。

また、PUT メソッドでリクエストをインターセプトして、ID 属性なしでペイロードを送信したいと思います。これは、URL に属性が既にあるためです。

これらの関数を作成しました:

問題は、id属性が画面 (フォーム) で削除されていることです。ユーザーが同じレコードのデータを何度も変更して、永久に滞在したい状況を想定します。

0 投票する
2 に答える
532 参照

angularjs - 循環依存が見つかりました: Http Response Interceptor 401

基本的な考え方は、HTTP 応答インターセプターを使用して、401 ステータスが表示された場合に Web ページをリダイレクトすることでした。しかし、これが正しい方法で行われているかどうかはわかりません。このようなものだと思っていましたが、見た目よりも難しいようです。現時点では、循環依存関係が見つかりました。

インターセプターを別の場所にプッシュする必要がありますか? そして、インターセプターは、401 リクエストを受信したかどうかをどのように知ることができますか? どの 401 をインターセプトする必要があり、どれを無視するかを定義することもできますか?

これは私のサービスです:

Update2

コメントで述べたように、私は多くのものに注入していました。これは修正された問題の 1 つですが、ログイン ページに移動すると、ページ (localhost:8080/user) の読み込み時にリクエストが行われ、ログイン ページへのリダイレクトの無限ループが発生し、結果としてブラウザがクラッシュします。 .

どの URL をリダイレクトする必要があり、どの URL をリダイレクトしないかを Interceptor に伝える方法はありますか

0 投票する
3 に答える
3209 参照

angularjs - API 呼び出し URL を変更する $http リクエストを傍受する

API呼び出しのURLを変更し、API URLを各サービス関数に挿入されたインターセプターのajax呼び出しの先頭に追加しようとしています

ただし、インターセプターは、.css、.html、または .json ファイルなどのすべての http 要求をインターセプトします。他の http リクエストを変更せずにインターセプターの URL を変更する良い方法は何ですか?

0 投票する
2 に答える
1075 参照

javascript - $httpProvider.interceptors が「未定義」の値を返すのはなぜですか

Yelp の API を使用する基本的な AngularJS アプリを作成しましたが$httpProvider.interceptors、応答を解析するのに問題があります。

これが私のアプリです:

私のyelpAPIサービス (写真にはありません) は、API リクエストを認証し、HTTP リクエストを生成します。次に、受信したデータを次のように Web コンソールに出力します。

ここに私の要求からのデータがあります:

businessesプロパティに配置された配列が必要です。そのため、配列$httpProvider.interceptors内で見つかったオブジェクトを解析するために使用することをお勧めします。Object.businesses

$httpProvider.interceptors最初のリクエストを行ったときの様子は次のとおりです。

$httpProvider.interceptors現在の外観は次のとおりです。

現在、次のようなエラーが表示されていますTypeError: Cannot read property 'businesses' of undefined。私が見落としているものはありますか?

編集#1

インターセプター内で使用console.log(response)して応答を出力したところ、response.businesses実際にはresponse.data.businesses. これでエラーは解決しましたが、$http呼び出しが返されundefinedました。私の新しい問題は何でしょうか?

編集#2

0 投票する
1 に答える
859 参照

javascript - AngularJS http インターセプターと選択的な URL

$http インターセプターが特定のパターンにのみ反応するようにするにはどうすればよいですか?

たとえば、インターセプターがすべての「/api/*」リクエストを処理し、他のリクエストはそのままにしておきたいと思います。