WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:ブラウザの[戻る]ボタン対策

0:[投稿] Nakamura [2003/12/18 00:18 ][環境:WIN2000、IE6 WIN2000、IE6]

お疲れ様です。中村です。

ブラウザの[戻る]ボタンについて質問です。

今、DBのメンテナンスをするWebアプリを作っています。
ほぼ、OKパターンは仕上がり、NGパターンの洗い出しを行っています。

そこで問題が・・・。

機能として検索で良くみかける[←前の10件]とか[次の10件→]を実装しました。
今回、Webアプリを作成するのが初めてだったので、作成中は「できた、できた」と短絡的に喜び、
ブラウザの[戻る]ボタンなんて全く意識しておりませんでした。

困っていることは下記の通りです。

@あるテーブルを検索し、その検索結果をブラウザに表示。
A[←前の10件]とか[次の10件→]でページ遷移させた後、ブラウザの[戻る]ボタンでメニューへ。(メニュー画面ではHttpSessionオブジェクトの初期化を行うようにしてあります。)
B他のテーブルを検索し、その検索結果をブラウザに表示。
C[←前の10件]とか[次の10件→]でページ遷移させた後、ブラウザの[戻る]ボタンで@の検索結果画面へ。
Dここで[←前の10件]とか[次の10件→]を押下すると最初のテーブルデータと次のテーブルデータがごちゃ混ぜに。

一般的なWebアプリではDのような操作をした場合はエラーページ等に遷移させるのでしょうか?
それとも、こういったバグがおこらないようなセッション管理を構えるのしょうか?(当然ですよね・・・。)
構えるのでしたら、その考え方等をご教授願います。


1:[質問] あ [2003/12/18 01:09 ]

解答でなく質問ですいません。

>C[←前の10件]とか[次の10件→]でページ遷移させた後、ブラウザの[戻る]ボタンで@の検索結果画面へ。

 自作CGI他で同様の操作を試してみましたが、Cにある@の検索結果画面には戻れなかったのですが、何か環境も影響しているのかな?

IE6 SP1/Win2k なので、貴殿とほぼ同じっぽいけどなぁ…。うーん


2:[回答] もりと [2003/12/18 01:43 ]

出力領域を毎回クリアすれば問題ないような気がしますが・・・


3:[回答] うみ [2003/12/18 06:04 ]

ASPでしょうか。でしたらキャッシュを「しない」「させない」「使わない」ように
Response.Expires = -1
Response.AddHeader "Pragma","no-cache"
Response.Addheader "Cache-control","no-store"
を必ず宣言するようにお勧めします。


4:[質問] Nakamura [2003/12/18 16:50 ]

皆様、ありがとうございます。

JSP&Servletのみで開発しております。
ブラウザの[戻る]ボタンで戻れるページというのは、
どういった仕組みで保持されているのでしょうか?
POSTとかGETとかが関係してるのかなぁと。

To あ様
戻れてしまうこと自体が問題とのようですね。

To もりと様
クリアとは具体的にどういった処理のことをおっしゃっておられます?JSPで行うのですか?Servletで行うのですか?
すみません。Web若輩者で。

To うみ様
まずASPについて。
JSPもASPも言語は違えど、同じようなものと認識しておりますが、
この認識は合ってますよね?
JSPでも同じようなことできるか調べてみます。
次にキャッシュについて。
キャッシュとはブラウザの[戻る]ボタンで戻れるページのことをおっしゃっていますか?


5:[回答] うみ [2003/12/18 18:09 ]

キャッシュとブラウザの[戻る]ボタンで戻れるページは別です。
[戻る]ボタンで戻れるページは履歴で管理されています。
戻ったり進んだりしているうちに履歴のつながりが切れ切れになります。[←前の10件]、[次の10件→]で正しく遷移すべきところを、切れ切れになった履歴をもとにキャッシュを読み込むのが原因だと思います。


6:[回答] AC [2003/12/18 19:28 ]

今までの話の流れを全く無視した投稿をします。
設計の問題であり、>>0程度の進捗で今からの対応が可能かどうかは
分かりませんが、とにかく投稿してみます。

検索のように、あるページから別のページを見たいと思うようなこと
(例えばいきなり100件目に飛びたいとか、別の検索結果が見たくなったりする)が
あるような場合でセッションを使うのは不向きではないかと思います。
セッションで管理せずに、あるURLを呼び出したら常に一定の結果が
得られるように、querystringで検索条件を指定するのが良いのではないかと
思います。

実際、Googleなど多くの検索エンジンでも、URLによって検索条件を
指定しています。


7:[完了] Nakamura [2003/12/23 18:52 ]

みなさま。どうもありがとうございます。
完了とさせていただきます。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World