問題タブ [referrer-policy]
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.
angular - strict-origin-when-cross-origin が原因で Angular インターセプター リクエストが失敗しました
インターセプターを使用して、Angular アプリケーションでアクセス トークン処理を実装しようとしています。
Spring バックエンドでは、いくつかのルートをパブリックに設定し (例: localhost:8080/api/public/hello
)、いくつかのルートはアクセス トークンでのみアクセスできるように設定しました (例: localhost:8080/api/hello
)。また、 WebMvcConfigurer をオーバーライドして CORS サポートを無効にしました。
コンポーネントがパブリックAPIを呼び出している場合、インターセプターは正常に動作し、Authorization ヘッダーが追加されますが、明らかにページを読み込む必要はありませんが、適切に設定されており、問題なく動作しているようです。
ただし、非パブリックAPI を呼び出そうとすると、インターセプターが機能しません。2 つの要求が呼び出され、最初の要求には Authorization ヘッダーが含まれていますが機能していません。もう 1 つの要求にはヘッダーがありません。到達していません。詳細は以下の写真に示されています。
- パブリック API のネットワークで見られるワーキング コール
- 非パブリック API を呼び出すときに最初に失敗した hello 呼び出し
- 非パブリック API の呼び出し時に 2 番目に到達できない hello 呼び出し
私のインターセプター コードは、リクエスト パラメーターを複製してヘッダーを設定するだけで、API 呼び出しはコンポーネント内の非常に単純な行です。関連するインポートが追加され、モジュール、プロバイダーが正しいはずです (パブリック API が機能するため、インターセプター自体は問題ないはずです)。
インターセプター (token-interceptor.service.ts):
コンポーネント (home.component.ts): (.helloPublic と .hello はメソッド名です)