- PR -

戻るボタンの動作が安定しない

1
投稿者投稿内容
バッファ三郎
会議室デビュー日: 2008/06/28
投稿数: 2
投稿日時: 2008-06-28 14:49
Javaのservlet/JSPを使った、Webアプリケーションを開発しているのですが、
ブラウザの戻るボタンを押した時に、「有効期限切れ」画面が表示される画面と、、
普通に前回画面が表示される画面が存在してしまっています。

戻るボタンを押した場合の動作を、Webアプリケーション全体で
統一(「有効期限切れ」画面が必ずでるか、またはでないよう)したいと
考えているのですが、「有効期限切れ」画面が出る場合と出ない場合の
違いがわからず、手を焼いております。

「有効期限切れ」画面が出る/出ないの条件をご存知の方がいらっしゃったら、
どなたかご教授頂けないでしょうか?


環境:
ブラウザ:IE6
Web/APサーバ環境:Apache + WebLogic

リクエストのform設定:
メソッドは必ず「POST」を指定
form名は画面ごとにばらばら。

アプリの画面遷移:
JSP → 共通サーブレット → JSP

アプリケーション全体で、サーブレットは共通のものを使用
(URLはどの画面も同じになる)


すでに調査で確認済みの件:
・<input type=file>は使用していない。
 →使っていると有効期限切れ」画面がでるらしいので確認

・formメソッドを「GET」にすればキャッシュされるので「有効期限切れ」はでない。
 →要件として、formメソッドには「POST」を指定するように
  定められているので使用できない。

・クライアントのキャッシュ設定で、「有効期限切れ」は制御される。
 →セキュリティを甘くすると、半端に「有効期限切れ」を起こす現象が起こる為、
  クライアント側だけの問題ではないと思われる。

・ブラウザがPOSTで渡した処理を再現できないから、「有効期限切れ」は起こる。
 →あるサイトでこのようなことが書いてあったが、
  再現できないというのは、リクエストの情報が欠けているということなのか?
  そのサイトには詳細がかかれていなかった為にそれ以上確認できず。
  


[ メッセージ編集済み 編集者: バッファ三郎 編集日時 2008-06-28 14:51 ]
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2008-06-28 18:08
>「有効期限切れ」画面が表示される画面と、、
> 普通に前回画面が表示される画面が存在してしまっています。
両者で、リスポンスヘッダなんか、どう違うの?
りる
会議室デビュー日: 2005/09/16
投稿数: 4
投稿日時: 2008-06-28 20:34
有効期限切れの画面表示状況はブラウザに依存します。

以前、調査をしたときの観点だけを記載します。
IE6のみの確認ですので、Firefox等ではまた変わります。
*これは自力調査の結果ですので、IEの正しい仕様ではないかもしれませんし、
調査時のオプションによって条件が変わる可能性があります。

1.出力するHTMLの有効期限
2.URL(キャッシュの有効性)
3.SSL/非SSL
4.画面要求メソッド(POST/GET)
5.IEの設定(キャッシュの問い合わせ方法)
6.IEの設定(暗号化ページのローカル保存)

IEの場合、戻りたい画面が以下の場合、画面が表示されます。
1.ローカルキャッシュがある
2.HTMLの有効期限が切れていない

そのため、上記以外の場合は、サーバーに再度画面を表示するための要求を行います。
その際、対象となる画面がGETの場合は、強制的に再度サーバー再度に要求をだして、画面を取得しようとします。
POSTの場合は、期限切れの画面を表示します。
期限切れの画面で、再読込を明示的に行うと、POSTされたデータを再送して良いかの確認ダイアログを表示します。

また、SSLで暗号化されたページは、原則キャッシュされないため、
ローカルキャッシュがないと認識されます。
(ただし、オプションによってはキャッシュ可能ですし、IEはメモリプロセスにキャッシュしている可能性があります)

バッファ三郎
会議室デビュー日: 2008/06/28
投稿数: 2
投稿日時: 2008-06-30 20:50
さっそくのご回答、ありがとうございます。

ranco様>
リスポンスヘッダは、どの画面も同じです。
また、リソースの有効期限(Expires)や、
リソースのキャッシィング有効/無効(Pragma)は特に指定していません。

りる様>

>IEの場合、戻りたい画面が以下の場合、画面が表示されます。
>1.ローカルキャッシュがある
>2.HTMLの有効期限が切れていない

有効期限は特に設定していないため、
取得できないのは「ローカルキャッシュがない」為ですね。

>また、SSLで暗号化されたページは、原則キャッシュされないため、
>ローカルキャッシュがないと認識されます。

問題の現象は、httpsで起こっているため、
原則、ローカルキャッシュがない→有効期限切れが出る
ということですね。

>(ただし、オプションによってはキャッシュ可能ですし、IEはメモリプロセスにキャッ>シュしている可能性があります)

この点について、お聞きしたいのですが、
SSLでもキャッシュ可能にするオプション設定とは、
具体的にどのような設定をすればよろしいのでしょうか。

また、メモリプロセスにキャッシュする条件がどのようなものか。
というのも気になるのですが、
さすがにIEの仕様となるので、わかりませんでしょうか。
調査時にお気づきになられた点だけでも、ご教授願えれば幸いです。

りる
会議室デビュー日: 2005/09/16
投稿数: 4
投稿日時: 2008-07-01 09:20
IEであれば、以下の設定で変更できます。
「詳細設定」→「セキュリティ」→「暗号化されたページをディスクに保存しない」

また、Expiresなどのキャッシュ制御は、全画面に一律同じ値を設定することをお勧めします。



詳しくは、以下のサイトを確認してみてください。
http://support.microsoft.com/kb/234067/ja
1

スキルアップ/キャリアアップ(JOB@IT)