Angular 4アプリから、私はTomcatにデプロイされたRESTサービスを呼び出しています。認証の場合、私はKerberosを使用しており、肯定的なケースでは期待どおりに動作しています。応答での認証エラーの処理
Kerberos認証が失敗したときにエラーが発生する問題を抱えています(ADに存在しないユーザーのため)。期待どおりに実行されます: '(応答レスポンス)=> {}'
ここ
this.restService.executeGET(url)
.subscribe(
(response: Response) => {
let httpResponseStatus = response.status;
console.log('httpResponseStatus: '+httpResponseStatus+', httpResponseAuthHeader: '+httpResponseAuthHeader)
//Do something with the Response
}
,
(error) => {
//Do something with the Error
console.log('Authenication Failed' + error);
}
)
executeGET(url: string) {
let reqHeaders = new Headers({ 'Content-Type': 'application/json' });
reqHeaders.append('Accept', 'application/json');
return this.http.get(url, { headers: reqHeaders });
}
認証が成功したと200は、サーバによって返された私の角度コードです。応答がWWW-Authenticate:Negotiateヘッダーの401コードである場合、「応答」ブロックと「エラー」ブロックのどちらも実行されず、ブラウザーに「ページを表示できません」というメッセージが表示されます。
IE 11 Networkタブを見ると、Responseが401/Negotiateとして返されたことが示されますが、何らかの理由で角度コードを回避しています。
そのブラウザが角度コードをロードするチャンスを得る前であっても「ページが表示できません」というメッセージが表示されるようです。
認証が失敗してもコードブロックが実行されるようにするには、ユーザーをログインページにリダイレクトするなどの適切な処置を講じることができます。
サービスを追加して、「401」のようなエラーを処理します。https://stackoverflow.com/questions/44108285/angular-4-custom-errorhandler-doesnt-r ecognize-custom-error –