1. ホーム
  2. ajax

[解決済み] XHRリクエストの応答としてリダイレクトを返す

2022-04-27 14:03:41

質問

ajaxリクエストに対してブラウザがリダイレクトレスポンスを受け取った場合、どうなりますか?

解決方法は?

ajaxリクエストに対してブラウザがリダイレクトレスポンスを受け取った場合、どうなりますか?

サーバーがリダイレクト(302レスポンスとLocation:ヘッダーの組み合わせ)を送信すると、ブラウザは自動的にリダイレクトに従います。のレスポンスは セカンド リクエスト (これもリダイレクトでないと仮定して) が、あなたのプログラムに公開されます。

実は、302レスポンスが発生したかどうかを検知する機能がないのです。もし302リダイレクトが200につながれば、あなたのプログラムは、元のリクエストが直接200につながった場合と同じように動作します。

これは、私の経験でもあり の動作は、仕様で呼び出されています。 .

2016年最新情報 時は流れ、朗報は、新しい fetch() API を提供する仕様になっています。 リダイレクトの処理方法をより細かく制御することができます。 デフォルトの動作はXHRと同様です。とはいえ、これは fetch() が実装されている場所でのみ動作します。 ネイティブ . fetch() の Polyfill バージョン -XHRをベースとした は、XHRの制限を受け続けます。 . 幸いなことに ネイティブブラウザ対応 は、うまく丸く収まっているようです。