10

会社が保有する別のドメインからいくつかのリソースを取得する必要があります。安全な HTML コンテンツを GET リクエストで取得したいと考えています。

ユーザーがアプリケーションからサインアウトすると、要求されたコンテンツはログイン ページに 302 を返します。

302 のヘッダーをスニッフィングしようとしても、これまでのところ期待した結果が返されませんでした。Observable から返される応答は 200 (ログイン ページ) です。

これが私のサンプルアプリです。

export class MenuComponent implements OnInit {

    private _resourceUrl = "http://localhost:3001/resources/menu";

    constructor(private _http: Http){
    }

    menu: string;

    ngOnInit(): void {
        this.getMenu()
            .subscribe(
                response => {
                    console.log(`Response status: ${response.status}`);

                    this.menu = response.text();
                },
                error => console.log(<any>error));
    }

    getMenu(): Observable<Response>{        
        return this._http.get(this._resourceUrl)
            .map((response: Response) => response)
            .catch(this.handleError);
    }

    private handleError(error: Response){
        console.log(error);
        return Observable.throw(error.json().error || 'Server Error');
    }
}

私は正しい軌道に乗っていますか?

4

2 に答える 2

22

サーバーが、ヘッダー内にリダイレクトする URL を含む 302 ステータス コードを含むリダイレクトを送信する場合、Locationリダイレクトはブラウザーによって自動的に処理されます。つまり、この URL への要求が実行されます。

そのため、XHR (およびその周りの Angular2 ラッパー、つまりHttpクラス) は最初のリクエストの結果を確認せず、2 番目のリクエストのレスポンスのみを確認します。

于 2016-04-27T09:28:34.357 に答える