今日の開発中に問題が発生しましたつまり、現在のエンドがインターフェイスを直接 href します (インターフェイスにはリダイレクト コードがあります)この方法で直接リダイレクトできます
ただし、フロントエンドが ajax を使用してこのインターフェイスをリクエストすると、リダイレクトされません
その原理を説明してください
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
ajax 自体はリダイレクトを実装できません。 フロントエンドのコールバック関数で判定して結果を返し、ページジャンプを実行するようにバックエンドを変更することができます。 基本的な考え方は、バックエンドがリクエスト ヘッダーに ajax 情報たとえばisAjax = request.getHeader("x-requested-with").equals("XMLHttpRequest");が含まれているかどうかを判断し、ジャンプを直接実行するかジャンプ URL 情報を返すなど、さまざまなリクエストに応じてさまざまな操作を実行し、フロントエンドがジャンプするというものです。
isAjax = request.getHeader("x-requested-with").equals("XMLHttpRequest");
私の理解: 前者はアドレスのジャンプ、後者は非リフレッシュサーバーにアクセスするためのインターフェースです。ページジャンプを行わずにインターフェイスにアクセスするだけで、Ajax が更新されずに使用されている場合、どのようにしてリダイレクトが発生するのでしょうか?
異なるブラウザからの Ajax リクエストは 3xx ステータス コードを受信しないように、必ずクライアント側でジャンプしてください。
Ajax は非同期リクエストを行います。ステータスコードを特定し、対応する操作を実行する必要があります。
通常、結果はバックエンドに基づいて返され、その後jsジャンプします
ajax は 301 ステータスでも正常に動作します ただし、前提条件として、同一生成元ポリシーを満たす必要があります!
この必要がある場合は、nginx パスを対応する URL にプロキシさせることができます
ajax は本来、ページを更新せずにサーバーとデータのみをやり取りします (データ対話の意味を理解する必要があります)。つまり、クライアントはサーバー側のインデックス/インデックス/API によって出力されたコンテンツを受け取るだけです。それに含まれる js コードと php コマンドは実行できません したがって、リダイレクトしたい場合は、以下が正しい処理方法です。 リーリー
非同期を変更して試してみてください。
ajax 自体はリダイレクトを実装できません。
フロントエンドのコールバック関数で判定して結果を返し、ページジャンプを実行するようにバックエンドを変更することができます。
基本的な考え方は、バックエンドがリクエスト ヘッダーに ajax 情報
たとえば
isAjax = request.getHeader("x-requested-with").equals("XMLHttpRequest");
が含まれているかどうかを判断し、ジャンプを直接実行するかジャンプ URL 情報を返すなど、さまざまなリクエストに応じてさまざまな操作を実行し、フロントエンドがジャンプするというものです。私の理解:
前者はアドレスのジャンプ、後者は非リフレッシュサーバーにアクセスするためのインターフェースです。ページジャンプを行わずにインターフェイスにアクセスするだけで、Ajax が更新されずに使用されている場合、どのようにしてリダイレクトが発生するのでしょうか?
異なるブラウザからの Ajax リクエストは 3xx ステータス コードを受信しないように、必ずクライアント側でジャンプしてください。
Ajax は非同期リクエストを行います。ステータスコードを特定し、対応する操作を実行する必要があります。
通常、結果はバックエンドに基づいて返され、その後jsジャンプします
ajax は 301 ステータスでも正常に動作します
ただし、前提条件として、同一生成元ポリシーを満たす必要があります!
この必要がある場合は、nginx パスを対応する URL にプロキシさせることができます
ajax は本来、ページを更新せずにサーバーとデータのみをやり取りします (データ対話の意味を理解する必要があります)。つまり、クライアントはサーバー側のインデックス/インデックス/API によって出力されたコンテンツを受け取るだけです。それに含まれる js コードと php コマンドは実行できません
したがって、リダイレクトしたい場合は、以下が正しい処理方法です。 リーリー
非同期を変更して試してみてください。