[Seasar-user:14416] Re: キャッシュを無効にする方法
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 5月 23日 (金) 17:00:13 JST
小林 (koichik) です.
Date: Fri, 23 May 2008 16:10:25 +0900
From: "小川昌幸" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:14413] Re: キャッシュを無効にする方法
> IEの標準でついてる「戻るボタン」
> 又は、キーボードの「backspace」などで、
> 「有効期限がきれてます」を画面に表示させたいだけです。
PRG パターンだと画面に表示されているのは
GET メソッドの結果なので,期限が切れていても
そのメッセージは表示されずに再度リクエストが
飛ぶだけのようですね.
> 最近、ユーザビリティーより、セキュリティ重視のお客様が増加して
> 戻るにて、画面が表示されないようにしたいなどの
> 要望が多く、今回困り果ててます
表示されないようにしたいだけなら,
再表示でエラー画面を表示するようにすれば
いいのでは?
te-uniqukey の値はシステム時刻を 16 進で
文字列化しているだけなので,最後に表示した
リクエストの te-uniquekey を HTTP セッションに
保存しておいて,それ以下の te-uniquekey が
リクエストされたら再表示なので例外をスローして
エラー画面に飛ばせばいいのではないかと.
@Component(instance=InstanceType.SESSION)
public class UniqueKeyDto {
public long uniqueKey;
}
public class XxxPage {
public UniqueKeyDto uniqueKeyDto;
public Map<String, String> param;
public void prerender() {
String value = param.get("te-uniquekey");
if (value != null && value.length() > 0) {
long uniqueKey = Long.parseLong(value, 16);
if (uniqueKey <= uniqueKeyDto) {
throw new ExpireException();
}
uniqueKeyDto.uniqueKey = uniqueKey;
}
...
}
}
適当ですがこんな感じで.
キャッシュが効いていると戻るでリクエストが
されないので,レスポンスヘッダでのキャッシュ
無効化は必要です.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内