こんにちは、私はサーバー側プログラミング (Java) が初めてで、SendRedirect と Forward の違いを読んでいました。Post-redirect-get パターンから、これにより、更新ボタンを押して変更を再送信できなくなることが説明されています。しかし、サーバー側の後処理が重く、サーバーが投稿を処理している間、3xx リダイレクトを返す前に、ユーザーがページを更新した場合はどうなるでしょうか? サーバーは、2 番目の着信要求を続けて無視することをどのように認識しますか?
1 に答える
実際、PRGは、以前のリダイレクトが行われた場合にのみ、戻るボタンを含む二重の POST 送信を防止することを保証するため、ブラウザーは GET 要求を送信できるようになりました。
しかし、そのリダイレクトを行う前に長いプロセスが実行されている場合はどうなりますか??
この状況を処理するには、次の 2 つの既知の方法があります。
リダイレクトの前に長時間のプロセスを実行する必要がある場合、PGR の目的が満たされないのは当然です。したがって、誰かがこの種の問題に陥っている場合は
then long-time process should be consider to run in separate thread
、ユーザーに進行状況を表示できるページにリダイレクトを送信するだけです (オプション)。これは Ajax に似ています。これは私が試したことはありませんが、本当に論理的
Synchronization Token pattern
であるため、基本的にはページに隠しトークンを設定することに基づいています.POSTリクエストがサーバーに送信されるとstore it into session
、そのトークンと .送信ボタンをクリックするかcompare the token
、セッションに保存されたページがページに表示されるたびに解決されるページを更新します。これは、同じユーザーに関連付けられた同じ要求を何度も処理することを避けるための代替方法です。
詳細を確認したい場合は、このリンクを提供しますhttp://www.deepakgaikwad.net/index.php/2009/03/19/post-redirect-get-design-pattern.html
それが役に立つことを願っています...