web-dev-qa-db-ja.com

JavaScriptで302 FOUNDをキャッチする

JQueryを使用して、AJAX POSTステータス302のHTTP応答を返すことができるサーバーへの要求。次にJavaScriptはこのURLにGET要求を送信します。この応答でユーザーをURLにリダイレクトしたいのですが、これは可能ですか?

35

指定された理由により、受け入れられた回答は機能しません。 302がブラウザーによって透過的に処理されるという問題を回避するためのハックを説明する質問へのリンクを含むコメントを投稿しました。

jQuery Ajax呼び出し後のリダイレクトリクエストの管理方法

しかし、それは少し汚いハックであり、掘り下げた後、私はより良い解決策だと思うものを見つけました- [〜#〜] json [〜#〜] を使用します。この場合、ajaxリクエストへのすべてのレスポンスにコード200を持たせ、レスポンスの本文に、Ajaxレスポンスハンドラーが適切な方法で使用できるJSONオブジェクトを追加します。

22
Steg

そうは思いません。 W3C は、302を含む特定のステータスコードを持つHTTPリダイレクトを透過的に追跡する必要があることを示します。以下に引用:

応答がHTTPリダイレクト(ステータスコード301、302、303、または307)の場合、透過的に追跡する必要があります(セキュリティまたは無限ループの予防策に違反しない限り)。他のエラー(401を含む)により、オブジェクトはそのエラーページを応答として使用する必要があります。

実験として、さまざまなブラウザー(Firefox 3.5、Chrome、IE8、IE7、IE6)から302ステータスコードを提供し、ブラウザーのリクエストオブジェクトにステータスを表示するサーバーにAjaxリクエストを実行してみました。いずれの場合も、200と表示されました。

6
Elias Zamaria

私の問題の理由は:

ページのテストにlocalhost/Home/Test addresを使用していました。ただし、urlパラメータに127.0.0.1/Home/AjaxRequestを使用したAjaxリクエストコード。 URLが異なる場合、このエラーが発生します。

多分それは誰かを助ける:)

2
Orhaan