5

同じページへの 301 リダイレクトを行うサーバー エンドポイントへの AJAX 呼び出しがありますが、末尾にスラッシュがあります。

ブラウザーは、AJAX で呼び出されたときにリダイレクトに従いますか、それとも無視しますか? 私の場合はそれらに従っていませんが、サーバー構成からのものである可能性があると考えました。

4

4 に答える 4

4

たぶん、この回答は少し遅れていますが、ajax リクエストに対する 301 レスポンスで同じ問題が発生しました。解決策は非常に簡単でした:

Apacheの書き換えルールは次のようなものです:

RewriteRule ^([^/]\w+)/?$ index.php?%{QUERY_STRING} [L,E=MODULE:$1]

XHR-Request URL は次のようになります。

/this/is/a/canonical/url + '?param=1&param=2...'

直接ファイル呼び出し (fi *.php) を使用せず、代わりに正規の URL (fi *.php のないディレクトリ パスのように見える) に書き換えると、301 が完全に移動されます。

この問題を解決するには、次のように / を XHR-Request-URL に追加するだけです。

/this/is/a/canonical/url + '/' + '?param=1&param=2...'

多分これは誰かを助けるでしょう。

于 2014-05-01T05:57:44.323 に答える
4

jquery を使用している場合は、以下の質問を参照して実装できます。デフォルトでは、jQuery (および Ajax を使用するほとんどのライブラリ)はデフォルトでリダイレクトに従いません。

jQuery Ajax 呼び出し後のリダイレクト要求を管理する方法

jQueryを使用してajaxリクエストがリダイレクトに従うのを防ぐ方法

jquery ajaxリダイレクトを処理する

于 2012-09-12T10:47:34.590 に答える
2

私もこの問題を抱えていて、末尾のスラッシュについての提案で考えさせられました... Web.Config にすべてを小文字にする書き換えルールがあり、それが私の AJAX 呼び出しを混乱させていました。私は GetResults (301 として表示された) に POST を行っていましたが、リライター (何らかの理由で不明) がそれを小文字の getresults GET に変更していたため、結果は 404 でした。

これが他の誰かに役立つことを願っています。

于 2014-10-31T02:11:59.757 に答える