web-dev-qa-db-ja.com

XHRリクエストへの応答としてリダイレクトを返す

ブラウザがajaxリクエストへのリダイレクト応答を受信するとどうなりますか?

137
Vasil

ブラウザがajaxリクエストへのリダイレクト応答を受信するとどうなりますか?

サーバーがリダイレクト(別名302応答とLocation:ヘッダー)を送信すると、リダイレクトの後に自動的にブラウザーが続きます。 secondリクエストへの応答(これも別のリダイレクトではないと仮定)は、プログラムに公開されるものです。

実際、302応答が発生したかどうかを検出する機能はありません。 302リダイレクトが200につながる場合、プログラムは元の要求が200に直接つながった場合と同じように動作します。

これは私の経験であり、 仕様に記載されている動作 です。

2016 Update:時間が経ちましたが、良いニュースは新しい fetch()API が提供されることです リダイレクトの処理方法の詳細な制御 、XHRと同様のデフォルトの動作。つまり、fetch()が実装されている場合にのみ機能しますnatativefetch()のポリフィルバージョン — XHRに基づいています— XHRの制限が引き続きあります 。幸いなことに、 ネイティブブラウザーサポート はうまく丸められているようです。

199
greim

ajax-requestは、リダイレクトafaikに従います。実際のコンテンツ(.responseText.responseXML)は、リダイレクト先のページのコンテンツになります。

リダイレクト(status-codelocation-headerreadyState 2または3で、しかしそれについては不明です。

7
jishi