- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sessionに付けた情報について)
sessionに付けた情報について
このQ&Aのポイント
- sessionを使ったWEBプログラムにおいて、ブラウザの「戻る」ボタンを押すと古いデータが残り、新しいデータではなく古いデータを元に動作してしまうことがあります。
- この問題はsessionの使い方によるものであり、解決策は現在見つかっていません。
- 経験者からのアドバイスや、sessionについて詳しい情報を提供しているサイトを教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ブラウザの戻るボタンやsubmitボタンの二度押しによるトラブルは必ず起こります。 現状ではこれを回避するように実装するという以外に方法はありません。 >ブラウザで「戻る」をした場合に、sessionに付けて受け渡しした >データが残ったまま前画面に戻り、次にアクションを起こした時に >新しいデータではなく、先ほどの古いデータを元にservletが起動して >しまいます。 これはブラウザから送信された情報ではなく、session中に保持されたデータを見にいってるからでは? 戻るボタンの対応の1つとして、ブラウザにも依存しますが、戻るボタンを押して欲しくないページ(servletで生成)では、Expireヘッダを付けておくというのも1つの手です。 IEとかは状況により平気でExpireヘッダを無視してくれたりしますが、絶対にあり得ないぐらい古い日付を付けておけば、再度submitされた場合、必ず新しいデータがservletに渡されてきます。 それともう1つは、servletで生成する各ページにマークをつけておく方法です。 つまり今どのページから遷移してきたかを記録しておく方法です。 これにより、異常な遷移が発生した場合、再入力の画面を出力するなどとするわけです。 他にも方法は考えられますが、取りあえずこんなところで試してみてください。
お礼
回答ありがとうございます。とても参考になりました。 もう一度ロジックを見直した結果、基準の情報を表示された ページに持たせてそれを元にsessionに情報をつける ことにしました。 これなら、どこに戻ろうがそこからまたデータを渡す ことができるので上記の現象は出なくなりました。 また、アドバイスをよろしくお願いします。