- 締切済み
Firefox,Operaで戻れないページを作りたい
ログイン中は戻るボタンを有効としているWebシステムで(キャッシュを有効としています)ログアウト後は、ログイン画面から戻るボタンで戻れなくし、ログイン中に閲覧したページが見れないよう制御をしたいのですが、IE以外のブラウザでうまくいきません。 IEは、ログアウト画面に「window.location.href = "XXXX";」 を実装し制御できたのですが、Opera,Firefox,Safariではどのようにしたら制御できるでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
たびたびで、すみません。 こんなページを見つけました。効果の程は未確認です。 http://www.javable.jp/notes/webscripts/backbutton.html
- fujillin
- ベストアンサー率61% (1594/2576)
HTMLから履歴やキャッシュを扱うのは無理みたいですね。 AitiveXなら可能かも知れませんが、用いるべきとも思えないしそもそもM$限定ですしね。 履歴やキャッシュを消すことを考えるより、残っていても関係がない方法を考えるほうが近道みたいですね。 以下はど素人の、思いつきのレベルですが・・・ (1)画面全体を1フレームで入れ子にして、常に子フレームに表示する。 URLが表示されないだけで、履歴には残らない(?)かも知れないけれど、キャッシュには残ってしまうし、戻るボタンでは表示できますね。 中身を見れば、子フレームのアドレスも調べることが可能ですし・・・ (2)Ajaxなどで、HTML内からサーバにデータ要求をして、その内容を都度表示するという方法を取ると、キャッシュに残らないのではないでしょうか?(実験していないので不明ですが・・・) もちろん、サーバー側で要求を処理する際には、ログイン後であるかのチェックをしてデータを返します。 キャッシュや履歴に残るのは「データを要求するHTML(+JavaScript)」だけなので、それを再表示した場合も、改めてデータ要求が発生するはず。 ・・・と思って、Ajaxの解説サイトを利用してちょいと実験してみましたが、URLの履歴は残らなくても、「戻る」ボタンでは表示されてしまうようですねぇ。 (3)実験していて気が付きましたが、DHTMLで受信内容を書き換えていると当然履歴では、一回のURLなので、そこで「戻る」を操作しても、何度か書換えをしいてもその前のアクセスへ戻るようです。(例えばログイン画面とか) 途中で、別サイトへジャンプしてから、「戻る」操作をすると、最後に表示されていた内容が表示されるようです。そこで、ログオフ時に一度ダミー画面を表示してからログオフすれば、それ以後の戻るではその画面しか表示されないことになりそうです。 ・・・で、うまくいくかと思ったのですが、ログオフなどしないで、別サイトにジャンプしてから戻る操作をすると、最後に表示していた1回分の画面だけは表示できてしまいそうです。 ブラウザを一旦閉じた後のアクセスには(キャッシュが表示されても)うまくいきそうですし、戻るボタンでも、2回以上の操作はきかない(最初にジャンプしてしまう)と予想はできますが・・・ なかなか、難しいものですね。 ・・・などと、考えてみましたが、なんだかブラウザ本来の機能を殺すというのも、なんだか正道から逆行しているような気もしてきました。 お役に立ちませんですみません。
- fujillin
- ベストアンサー率61% (1594/2576)
直接の回答になっていませんが、質問文を読むと少々不完全な気してしまいます。(誤解していましたら失礼) 現在のページ構成だと、戻るボタンで戻れなくても、ブラウザ側の履歴の記録や、ログイン中にURLをブックマークしたりしておいて、ページにダイレクトにアクセスすると表示できてしまうのではありませんか? あるいはページ検索などに引っかかっても、ダイレクトにアクセスされますよね? 意図されていることをきちんと実現するためには、ログイン後の画面表示には、各ページの表示の前にログイン手続きが行われているかをチェックして、ログインされていない場合は、非表示のページ又はログイン画面へジャンプするような構成にしておかないとうまくいかないのではないでしょうか?
補足
ありがとうございます。 サーバー側ではログイン後は必ず認証チェックを行っています。 キャッシュの有効期限を短く設定しているので、履歴等からダイレクトにアクセスされた場合はサーバー側に送信され、サーバー側ではログイン画面を表示するよう制御しており、問題なく動作します。 戻るボタンで戻った場合、キャッシュの有効期限を無視してブラウザーで保存しているキャッシュから画面を復元しているのだと思います。 ブラウザーの設定に関係なく、必ずサーバー側に送信するよう制御できれば、それでもいいのですが、良い方法はないでしょうか?