Dart クライアントと Java バックエンドがあります。アプリケーションにセキュリティを追加しようとしているので、Java サーバーはデータにアクセスする前にユーザーを認証する必要があります。Web サービス呼び出しが着信し、ユーザーが認証されていない場合、バックエンド サービスは HttpResponseCode (401) を含むリダイレクトをクライアント呼び出しに送信します。クライアントが request.status を解析して 401 を確認できるようになりましたが、リダイレクトは処理されません。
ダーツコード
HttpRequest request=new HttpRequest();
request.onReadyStateChange.listen((_) {
if (request.readyState == HttpRequest.DONE &&
(request.status == 200 || request.status == 0)) {
onHistoryLoaded(request.responseText);
}
});
request.open("GET", url);
request.send();
request.onLoadEnd.listen((e) => processRequest(request));
request.onError.listen((Object error)=>handleError(error));
void processRequest(HttpRequest request) {
var status = request.status;
print("status $status"); //401
}
void handleTheError(Error e){
print("handleTheError Request error: $e");
}
Java サーバー
//Tried both of these
// response.setStatus(HttpStatusCodes.STATUS_CODE_UNAUTHORIZED);
// response.sendRedirect(LOGIN_PAGE);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setHeader("Location", LOGIN_PAGE);
どんな提案も素晴らしいでしょう。ありがとう