@634

同期トークン

Advertisement

重複するリクエスト

HTTPのメカニズムで実現されているシステムでは、重複するリクエストの問題が発生する。状況としては以下のような例がある。
  • ボタン押下でリクエスト送信後、レスポンスを受け取る前に再びボタンを押下できる。
  • ブラウザの進む・戻るボタンによる画面遷移で、送信済みのリクエストを再送信してしまう。
JavaScriptやHTTPヘッダのno-cacheの仕組みなどにより対処することも出来るが、ブラウザの実装や設定に依存する。
同期トークンを使うことで確実に対応できるようになる。

同期トークンの仕組み

  1. クライアントからサーバへ画面表示のリクエストを送信する。
  2. サーバはレスポンス用の画面を作成する。その際に、一意となるトークンを作成し、画面に埋め込む。また同様にセッションにもトークンを埋め込む。
  3. クライアントはトークンが埋め込まれた画面を受け取る。
  4. クライアントはサーバに対してトークンを含むリクエストを送信する。
  5. サーバは受け取ったトークンと、セッションから取り出したトークンの比較を行う。
  6. トークンが一致すれば、セッションのトークン情報をクリアした後、処理を継続する。
    • 2度押しのリクエストを受け取った場合、1度目のリクエストでセッションのトークン情報はクリアされているので、重複した処理は行われない。

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール