データの再送信を防ぐ仕組み
※以下、自分なりのまとめ
PRGパターンとは、
- Post/Redirect/Get の略称
- Post でデータを送信
- サーバで処理後、Redirect で別URLに遷移させる
- 画面表示のために Get でアクセスすることになる
PRGパターンにすると
フォームの内容が複数回送信されるのを防ぐことができる。具体的には F5 を押されても Get アクセスされるだけだから再送信されることがない。
ただ、「戻る」ボタンで戻られてしまうと、結局は再送信されてしまうので、PRGパターンだけでは完全な防止策にはならない。
完全な防止策として
再送信を防ぐための識別として、以下を使って管理方法がある。
- token
- SessionID
サーバで保持している token と送信された token が同じであれば実行、などの処理が必要になる。