プロキシキャッシュ対策

http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/405.html

プロキシキャッシュ対策
HTTP/1.1 にはこの問題に対処するための Cache-Control ヘッダが用意されている。次のような Cache-Control ヘッダをHTTPレスポンスに記述することによって、Webアプリケーションからブラウザに送るコンテンツが、途中の経路上でむやみにキャッシュに記録されたり再利用されたりしないように、プロキシサーバやキャッシュサーバに指示するというものである。

Cache-Control: private
Webサーバから返されるコンテンツがただ一人のユーザのためのものであることを示す。このコンテンツは、複数のユーザが共有されるキャッシュに記録されるべきではないことを表している。ただし、これは、一人のユーザのみが利用するキャッシュ(ブラウザのキャッシュ等)への記録を禁じるものではない。Cache-Control: private のみが指定されている場合、何らかのキャッシュへの記録が行われるおそれがある。
Cache-Control: no-store
このヘッダは、Webサーバから返されてくるコンテンツをキャッシュに記録するな、という指示である。
Cache-Control: no-cache
一見「キャッシュを使うな」のように見えるこのヘッダが実際に意味するところは少々ニュアンスが異なる。このヘッダの意味は、いちどキャッシュに記録されたコンテンツは、現在でも有効か否かを本来のWebサーバに問い合わせて確認がとれない限り再利用してはならない、という意味である。
Cache-Control: must-revalidate
このヘッダは、キャッシュに記録されているコンテンツが現在も有効であるか否かをWebサーバに必ず問い合わせよ、という指示である。
これらのヘッダを適宜取捨選択して使用することになるが、これらをすべて指定して次のようにしても構わない。

  Cache-Control: private, no-store, no-cache, must-revalidate

HTTP/1.0 の考慮
Webサーバとブラウザの通信経路上に存在するプロキシサーバやキャッシュサーバをすべてWebサーバ側で把握することは困難である。場合によっては、古い設備が存在し、HTTP/1.1 の Cache-Control ヘッダを解さないプロキシが存在するかもしれない。

このような心配のある場合は次のヘッダをHTTPレスポンスに含めると、相手のプロキシが対応してくれる場合もある。

  Pragma: no-cache

ただし、この方法が常に有効であるという保証はない。

残したくないときは

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">

で、okってこと・・・?