- ベストアンサー
プロキシのキャッシュを無効にするには?
Webアプリを作っています。 データの不整合等が嫌なので、ブラウザの「戻る」で戻った際には、no-cacheを設定しているので、 ページを表示しないようになっているのですが、 会社からアクセスしたときには、プロキシのせいか、 ブラウザの戻るボタンが効いてしまうのです。 これを効かなくする方法はありますでしょうか? サーバの設定、クライアント側の設定、 どちらでも良いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
この問題に対して取った対策の一例です。 ページが遷移する毎にシーケンス番号(連番)を払い出し、次回のPOSTやGETの時にその番号を送るようにします。同時にセッションにも連番を保持しておけば、キャッシュから送信されたのか否かを判定できるので、不整合が起きる前にエラー画面を出して操作のやり直しをユーザに促せます。 かなりメンドクサイですが、お金が絡む部分など重要な画面だけにでも適用するといいと思います。
その他の回答 (1)
- yoneda_16
- ベストアンサー率47% (166/350)
Webアプリケーションの場合、キャッシュや「戻る」ボタンの問題はどんな対策を行おうとも本質的に解決できません。このため、キャッシュや「戻る」ボタンを使われても問題なく動作するように設計することが必要です。 とはいえ、キャッシュされないようにすることも念のための安全対策として重要ではあります。当該目的のために以下の3つのヘッダが良く使用されます。 Cache-Control ヘッダフィールド http://www.studyinghttp.net/rfc_ja/rfc2616.ja.xhtml#sec14.9 Pragma ヘッダフィールド http://www.studyinghttp.net/rfc_ja/rfc2616.ja.xhtml#sec14.32 Expires ヘッダフィールド http://www.studyinghttp.net/rfc_ja/rfc2616.ja.xhtml#sec14.21 これらを使い、「キャッシュするな」「手元にキャッシュコピーが存在しても再リクエストしろ」「この内容はすぐに期限切れになる」旨を通信内容に含めることができます。正しく設計されたプロキシサーバやWebブラウザであれば、これらヘッダを確認してキャッシュしないよう動作するはずです。ヘッダにこれらの情報を埋め込むための方法は環境によって異なりますのでお手元の開発環境についてくる説明をご確認ください。
お礼
ありがとうございます。 全箇所で対応すると大変ですが、重要な箇所だけ入れてみました。 うまく動作しました!