の制御方法をウェブページのキャッシングは、すべてのブラウザ?
-
09-06-2019 - |
質問
当社の調査を示していることのないすべてのブラウザを尊重し、httpキャッシュディレクティブ制服ます。
セキュリティ上の理由によりしないように特定のページにアプリケーションは、キャッシュ 来 ウェブブラウザです。このなければならないですね。少なくとも以下のブラウザ:
- Internet Explorer6+
- Firefox1.5+
- Safari3+
- Opera9+
- クローム
当社の要件にしたセキュリティテストです。ログイン後から当社のウェブサイトがプレスのバックボタンやビューキャッシュされたページ。
解決
導入
の最小セットのヘッダが作品の全ての顧客は、プロキシ):
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
の Cache-Control
は、HTTP1.1の仕様お客様および代理人(暗黙のうちに必要なお客様次 Expires
).の Pragma
は、HTTP1.0仕様のための先史時代。の Expires
は、HTTP1.0、1.1の仕様お客様および代理人.HTTP1.1では、 Cache-Control
ものの方が優先され Expires
, この後、すべてのHTTP1.0プロキシのみです。
いつIE6とその壊れたキャッシュがけページHTTPS通信のみ no-store
, そ省略 Cache-Control: no-cache
.
Cache-Control: no-store, must-revalidate
Pragma: no-cache
Expires: 0
いつIE6もHTTP1.0(HTTP1.1導入された1997年、そこを省略 Pragma
.
Cache-Control: no-store, must-revalidate
Expires: 0
ない場合は気HTTP1.0プロキシはその省略 Expires
.
Cache-Control: no-store, must-revalidate
一方の場合、サーバーを含む有効な Date
ヘッダは、その理論を省略 Cache-Control
もな Expires
だけます。
Date: Wed, 24 Aug 2016 18:32:02 GMT
Expires: 0
その失敗する場合があり例のenduserを操作業システム日付、クライアントソフトウェアに依存します。
その他 Cache-Control
パラメータなど max-age
関係していない場合は、上記の Cache-Control
パラメータを指定します。の Last-Modified
ヘッダとして含む他のほとんどの回答はこちら のみ 興味深いの場合 実際にい キャッシュを要求だけを指定する必要があります。
設定方法です。
PHPを利用した:
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.
Javaを利用してサーブレット、またはNode.js:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setHeader("Expires", "0"); // Proxies.
をASP.ネMVC
Response.Cache.SetCacheability(HttpCacheability.NoCache); // HTTP 1.1.
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.
を使用ASP.NET Web API:
// `response` is an instance of System.Net.Http.HttpResponseMessage
response.Headers.CacheControl = new CacheControlHeaderValue
{
NoCache = true,
NoStore = true,
MustRevalidate = true
};
response.Headers.Pragma.ParseAdd("no-cache");
// We can't use `response.Content.Headers.Expires` directly
// since it allows only `DateTimeOffset?` values.
response.Content?.Headers.TryAddWithoutValidation("Expires", 0.ToString());
を使用ASP.NET:
Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.
をASP:
Response.addHeader "Cache-Control", "no-cache, no-store, must-revalidate" ' HTTP 1.1.
Response.addHeader "Pragma", "no-cache" ' HTTP 1.0.
Response.addHeader "Expires", "0" ' Proxies.
をRuby on Rails、Python/フラスコ:
headers["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
headers["Pragma"] = "no-cache" # HTTP 1.0.
headers["Expires"] = "0" # Proxies.
Python/Django:
response["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
response["Pragma"] = "no-cache" # HTTP 1.0.
response["Expires"] = "0" # Proxies.
Pythonを使用した/ピラミッド:
request.response.headerlist.extend(
(
('Cache-Control', 'no-cache, no-store, must-revalidate'),
('Pragma', 'no-cache'),
('Expires', '0')
)
)
を行:
responseWriter.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") // HTTP 1.1.
responseWriter.Header().Set("Pragma", "no-cache") // HTTP 1.0.
responseWriter.Header().Set("Expires", "0") // Proxies.
Apacheの使用 .htaccess
ファイル:
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
使用HTML4:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
HTMLメタタグvs HTTP応答ヘッダを
を知ることが重要であることがHTMLページでは以HTTP接続、およびヘッダが存在 両 HTTP応答ヘッダのHTML <meta http-equiv>
タグの指定されたHTTP応答ヘッダの取得が優先HTMLのmetaタグです。HTMLのmetaタグを使用しているときにページからローカルディスクにファイルシステムを介して file://
ます。参照 W3HTML仕様章5.2.2.注意このときに指定しないプログラムでは、ウェブサーバーでつなど一部のデフォルト値です。
一般的には、きっと新しい発見があると思い直 ない 指定したHTMLタグの混同を避けるゼに依存するハードにHTTP応答ヘッダを含みます。また、特に、 <meta http-equiv>
タグ 無効 HTML5.のみ http-equiv
値を記載 HTML5の仕様 を許可する。
検証実際のHTTP応答ヘッダを
確認のため、その他ご覧/デバッグしHTTPでの交通モニターのブラウザの開発者のパワフルなツールセットです。きを押して、F12ム/Firefox23+/IE9+を開き、"ネットワーク"または"ネット"のタブパネルをクリックし、次にそのHTTPリクエストの発掘すべての詳細は、HTTP要求に応じます。の 以下の画面 ですからChrome:
たい設定方にヘッダファイルもダウンロード
まず、この問いに答えは"webページ(HTMLページがあるので、"ファイルをダウンロード"(PDF、zip、Excelです。きっと新しい発見があると思いいキャッシュに格納および使用のファイルバージョン識別子かのURIのパスはquerystringをredownloadに変更ファイルです。申請時の方にno-cacheヘッダファイルのダウンロードがとにかく、そのことに留意してくださいIE7/8バグがサービスを提供するファイルをダウンロードHTTPS通信ではなくHTTP.詳細は、 IEをダウンロードできなfoo.当財団.IEませんでしたがこのインターネットサイトです。要求されたサイトは利用不可できなか.
他のヒント
(こんにちはみ:ただ不mindlesslyコピー&ペーストされたすべてのヘッダまで)
最初に "戻る"ボタン履歴 なキャッシュ:
の鮮度モデル(4.2節)必ずしも歴史のメカニズム。ることで、履歴機構を表示できる以前の表現を備えている場合であっても終了しました。
のHTTPスペックの文言をいっそう強固になり、明示的に語ウェブブラウザーを無視しキャッシュのためのディレクバックボタンの歴史。
戻っ帰時に時間をユーザー た ログインします。なデータベースに以前に開いた。
しかしながら、実際には、キャッシュの影響を与えることができ[戻る]ボタンを非常に特定の状況:
- ページ 必要 すると HTTPS,そうでない場合、このキャッシュの秀逸さんです。プラスであれば、使用しないHTTPS、そのページでは、脆弱性問題に適切に対処ログインを盗む多くすることはいたしません。
- 郵送してください
Cache-Control: no-store, must-revalidate
(一部のブラウザでの観察no-store
一部の観察must-revalidate
)
す ない 必要の
<meta>
ャッシュヘッダー—動作していません。まったく役に立たないのでpost-check
/pre-check
—ではIEのみ指令のみを適用 cachable 資源です。- 送信じヘッダーや、ダース部品です。一部のPHPスニペットが実際に置き換え前のヘッダーは、昨れ送信されます。
したい場合は、追加:
no-cache
またはmax-age=0
, しながら、リソース(URL)"無効"が必要ブラウザのチェックの場合にはサーバが新しいバージョン(no-store
ていることをもっと強く).Expires
日付のためのHTTP/1.0クライアが 実 HTTP/1.0のみのお客様は全く存在しないこととなります
ボーナス: 新HTTPキャッシュRFC.
としてporneL述べたいものではない無効化するには、キャッシュが無効化するには、履歴バッファです。異なるブラウザにおい微妙な方法を無効にするには履歴バッファです。
クロム(v28.0になります。1500.95円)ることができまみ Cache-Control: no-store
.
FireFox(v23.0になります。1)これらのいずれかの事業:
Cache-Control: no-store
Cache-Control: no-cache
(httpsみ)Pragma: no-cache
(httpsみ)Vary: *
(httpsみ)
オペラ(v12.15)ただけることができる Cache-Control: must-revalidate
(httpsのみ)。
Safari(v5.1.7日7534.57.2)これらのいずれかの事業:
Cache-Control: no-store
<body onunload="">
htmlにおけるCache-Control: no-store
(httpsみ)
にIE8(v8.0になります。6001.18702IC)これらのいずれかの事業:
Cache-Control: must-revalidate, max-age=0
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: must-revalidate
Expires: 0
Cache-Control: must-revalidate
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
(httpsみ)Vary: *
(httpsみ)
組み合わせの上ならこちらのソリューション作品のためのChrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15: Cache-Control: no-store, must-revalidate
(httpsみ)
このhttpsでのオペラな話履歴バッファの平httpます。ができませんのでhttpsまたは作成を無視するオペラのまなければならないことです:
Cache-Control: no-store
<body onunload="">
以下のように原ログの試験:
HTTP:
Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:オペラ12.15
成功:Chrome28日、FireFox23日、IE8、Safari5.1.7Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:オペラ12.15
成功:Chrome28日、FireFox23日、IE8、Safari5.1.7Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
失敗す:Safari5.1.7、オペラ12.15
成功:Chrome28日、FireFox23日、IE8Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
失敗す:Safari5.1.7、オペラ12.15
成功:Chrome28日、FireFox23日、IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Cache-Control: no-store
失敗す:Safari5.1.7、オペラ12.15
成功:Chrome28日、FireFox23日、IE8Cache-Control: no-store
<body onunload="">
失敗す:オペラ12.15
成功:Chrome28日、FireFox23日、IE8、Safari5.1.7Cache-Control: no-cache
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Vary: *
失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
成功:なしPragma: no-cache
失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
成功:なしCache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Cache-Control: must-revalidate, max-age=0
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Cache-Control: must-revalidate
Expires: 0
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Cache-Control: must-revalidate
Expires: Sat, 12 Oct 1991 05:00:00 GMT
失敗す:Chrome28日、FireFox23、Safari5.1.7、オペラ12.15
成功:IE8Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
成功:なし
HTTPS:
Cache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
<body onunload="">
失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
成功:なしCache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
<body onunload="">
失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
成功:なしVary: *
失敗す:Chrome28日、Safari5.1.7、オペラ12.15
成功:FireFox23日、IE8Pragma: no-cache
失敗す:Chrome28日、Safari5.1.7、オペラ12.15
成功:FireFox23日、IE8Cache-Control: no-cache
失敗す:Chrome28日、Safari5.1.7、オペラ12.15
成功:FireFox23日、IE8Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
失敗す:Chrome28日、Safari5.1.7、オペラ12.15
成功:FireFox23日、IE8Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
失敗す:Chrome28日、Safari5.1.7、オペラ12.15
成功:FireFox23日、IE8Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
失敗す:Chrome28日、Safari5.1.7、オペラ12.15
成功:FireFox23日、IE8Cache-Control: must-revalidate
失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7
成功:オペラ12.15Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
<body onunload="">
失敗す:Chrome28日、FireFox23日、IE8、Safari5.1.7
成功:オペラ12.15Cache-Control: must-revalidate, max-age=0
失敗す:Chrome28日、FireFox23、Safari5.1.7
成功:IE8、オペラ12.15Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:Chrome28日、Safari5.1.7
成功:FireFox23日、IE8、オペラ12.15Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:Chrome28日、Safari5.1.7
成功:FireFox23日、IE8、オペラ12.15Cache-Control: no-store
失敗す:オペラ12.15
成功:Chrome28日、FireFox23日、IE8、Safari5.1.7Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:オペラ12.15
成功:Chrome28日、FireFox23日、IE8、Safari5.1.7Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失敗す:オペラ12.15
成功:Chrome28日、FireFox23日、IE8、Safari5.1.7Cache-Control: private, no-cache
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
失敗す:Chrome28日、Safari5.1.7、オペラ12.15
成功:FireFox23日、IE8Cache-Control: must-revalidate
Expires: 0
失敗す:Chrome28日、FireFox23、Safari5.1.7,
成功:IE8、オペラ12.15Cache-Control: must-revalidate
Expires: Sat, 12 Oct 1991 05:00:00 GMT
失敗す:Chrome28日、FireFox23、Safari5.1.7,
成功:IE8、オペラ12.15Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
<body onunload="">
失敗す:Chrome28日、FireFox23、Safari5.1.7,
成功:IE8、オペラ12.15Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
<body onunload="">
失敗す:Chrome28日、FireFox23、Safari5.1.7,
成功:IE8、オペラ12.15Cache-Control: private, must-revalidate
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
失敗す:Chrome28日、Safari5.1.7
成功:FireFox23日、IE8、オペラ12.15Cache-Control: no-store, must-revalidate
失敗す:なし
成功:Chrome28日、FireFox23日、IE8、Safari5.1.7、オペラ12.15
私は見つかります。configルート有(たところにある答えがないように同意したものとさせていたのでここに掲載)
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache, no-store, must-revalidate" />
<!-- HTTP 1.1. -->
<add name="Pragma" value="no-cache" />
<!-- HTTP 1.0. -->
<add name="Expires" value="0" />
<!-- Proxies. -->
</customHeaders>
</httpProtocol>
</system.webServer>
こちらはエクスプレス/node.js この
app.use(function(req, res, next) {
res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
res.setHeader('Pragma', 'no-cache');
res.setHeader('Expires', '0');
next();
});
これらのすべての答えをこのページもあった。特にこなしてまとめられるというメリットIE8をキャッシュ版のページのときにアクセスで打ちのボタンを押します。
研究-試験することを見いだし,その二つのヘッダといった:
Cache-Control:no-store
り:*
についての説明はヘッダ、チェックアウト http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.6
にIE6-8のFF1.5-3.5、クロムの2、3、Safari4、オペラ9-10、これらのヘッダのページを要求するサーバーからをクリックすると、次のようにへのリンクはページのURLに直接アドレスバーがあります。ることにつ 99% のすべてのブラウザとして多く使われているのJan'10.
にIE6、オペラ9-10、打戻る]ボタンを未だによるキャッシュされたバージョンロードされます。すべての他のブラウザではそれぞれのフェッチ新鮮なバージョン、サーバーにコピーします。こんな設定のヘッダを起こすような方はブラウザに戻らないキャッシュされたバージョンのページをう場合がございますのでご注意下のボタンを押します。
更新: 書いた後にこの答えは、そのウェブサーバは特定としてのHTTPサーバー1.0.のヘッダん掲載されているの正しいものにするための対応からのHTTPサーバー1.0でないキャッシュによるブラウザを推奨いたします。HTTP1.1サーバーを見BalusCの 答え.
後のビットを研究した以下の一覧のヘッダを見ているとほとんどのブラウザ:
- 終了:Mon,26Mar-1997年05:00:00GMT
- キャッシュ-制御: no-cache, 民間 必revalidate, max-古=0のとき、ポスト-チェック=0のとき、チェックイン前=0のない店舗
- Pragma:no-cache
にASP.NET 追加し、これらを以下のスニペット:
Response.ClearHeaders();
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.0
の利用にpragmaヘッダーの対応は妻物語.RFC2616に限定してリクエストヘッダ
免責事項:として読み@BalusCの答えです。読込後、以下のキャッシュチュートリアル: http://www.mnot.net/cache_docs/ (質問の中から、いくつか選んで読んでみたいもの)だと思います。しかし、歴史的な理由で起こっていかれん)、また独自の回答。
また'可'回答のPHPない作業でした。そのた研究はほとんどが若干異体から試作まで。ここでは:
header('Cache-Control: no-store, private, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false); // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Expires: 0', false);
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header ('Pragma: no-cache');
るべきます。けれども、問題なのは、ここを設定する場合の同じ部分をヘッダを回る場合、 false
送信されないとして二つ目の引数のヘッダー機能で、ヘッダー機能を上書きしてください前 header()
ます。なので、設定する場合には、 Cache-Control
, 例えばだいたいすべての引数を一つ header()
関数呼び出しなければならないようになります:
header('Cache-Control: this');
header('Cache-Control: and, this', false);
詳しくは完全に文書化 こちらの.
があるバグを修正IE6
コンテンツとContent-Encoding:gzip"を常にキャッシュを使用している場合でも"Cache-Control:no-cache".
http://support.microsoft.com/kb/321722
無数の組み合わせで自分だけのgzip圧縮IE6ユーザー(チェックインのユーザエージェントのための"行6")
のためのASP.NET コア、簡単なミドルウェアクラス:
public class NoCacheMiddleware
{
private readonly RequestDelegate m_next;
public NoCacheMiddleware( RequestDelegate next )
{
m_next = next;
}
public async Task Invoke( HttpContext httpContext )
{
httpContext.Response.OnStarting( ( state ) =>
{
// ref: http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all-browsers
httpContext.Response.Headers.Append( "Cache-Control", "no-cache, no-store, must-revalidate" );
httpContext.Response.Headers.Append( "Pragma", "no-cache" );
httpContext.Response.Headers.Append( "Expires", "0" );
return Task.FromResult( 0 );
}, null );
await m_next.Invoke( httpContext );
}
}
その後に登録し Startup.cs
app.UseMiddleware<NoCacheMiddleware>();
ただくにあたりのどこかに後
app.UseStaticFiles();
をRFC HTTP1.1 によると、適切な方法を追加するにはHTTPヘッダ:
Cache-Control:no-cache
古いブラウザがこれを無視していない場合、適切に対応HTTP1.1.の方に体験してみましょうヘッダ:
Pragma:no-cache
これはもう作業のためのHTTP1.1ブラウザを推奨いたします。
これらのディレクティブな緩和するセキュリティリスクです。彼らは本当に力のUAのリフレッシュ揮発性情報、保UAのかを保持す。見 この類似の問題.したがって、少なくともしないという保証はありません他のルーター、代理人等今を無視してはいけないのキャッシュする指令です。
一方、政策に関する物理的アクセス、コンピュータ、ソフトウェアのインストールの手にマイル)先の企業規りましたのでお知らせいたしますの場合は消費者がこれらの情報の公開だけでもいちわかることのできる情報のヒットチューニングされたエンジンは、その機 その 責任せん。
設定の変更httpヘッダの一日1995年に通常のリックを達成しています。
次に例を示します。
Expires: Wed, 15 Nov 1995 04:58:08 GMT Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT Cache-Control: no-cache, must-revalidate
の PHPのヘッダー機能 "日本でしかできない完全な例に寄与した第三者による):
header('Pragma: public');
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0', false); // HTTP/1.1
header ("Pragma: no-cache");
header("Expires: 0", false);
場面をダウンロードに問題IE6-IE8over SSLやキャッシュ:no-cacheヘッダや類似値)とMS Officeファイルを利用できるキャッシュ:民間no-storeヘッダに戻りファイルを投稿す。ことができる。
私の場合は修正の問題がクロムとのこ
<form id="form1" runat="server" autocomplete="off">
かのコンテンツのpreviusフォームのデータの場合、ユーザの戻るボタンをクリックしまセキュリティ上の理由により
私の場合でもすべてのブラウザの設定による Pragma:no-cache
のヘッダの答えを提供BalusCを予防できないSafari5それ以前のバージョンなど)から表示するコンテンツをブラウザからのキャッシュ使用時のブラウザの戻るボタンを押します。を防ぐことを追加する空onunloadイベントハンドラの属性をbodyタグ:
<body onunload="">
このhackで休憩を進キャッシュサファリ: あるクロスブラウザにonloadイベントをクリックすると"戻る"ボタン?
の受け答えが表示されない仕事IIS7+、より多くの質問のキャッシュヘッダを送信されてこないでII7:
- 何かを強制対応してキャッシュ-制御:プライベートIIS7
- IIS7:キャッシュ設定な...なぜですか?
- IIS7+ASP.NET MVCイキャッシュヘッダのない作業
- 設定キャッシュ-制御のためのaspxページ
- Cache-control:no-store必revalidateに送信しないクライアントブラウザにIIS7+ASP.NET MVC
など
の受け答えが正しいとするヘッダの設定が必要ないのは、どのように設定されている必要があります。このように動作しIIS7:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache");
Response.AppendHeader("Expires", "-1");
最初のラインセット Cache-control
へ no-cache
, し、次の行を追加し、その他の属性 no-store, must-revalidate
また、良好な測定だくには、リセットの ExpiresDefault
お .htaccess
ファイルを使用している場合、このキャッシュを有効にする.
ExpiresDefault "access plus 0 seconds"
その後、利用できる ExpiresByType
設定値のファイルをキャッシュす:
ExpiresByType image/x-icon "access plus 3 month"
この場合にも便利な場合はパロアルトネットワークスのファイル例php等ているキャッシュされ、ブラウザかすことはできませんの姿はいかがでしょうか。チェック ExpiresDefault
.
のほか、ヘッダの検討にお使いいただけるページ https.多くのブラウザーなキャッシュhttpsのデフォルトです。
//In .net MVC
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult FareListInfo(long id)
{
}
// In .net webform
<%@ OutputCache NoStore="true" Duration="0" VaryByParam="*" %>
完了 BalusC -> 答え ご利用の場合はperlでCGIを追加できます。
使用Perl:
Use CGI;
sub set_new_query() {
binmode STDOUT, ":utf8";
die if defined $query;
$query = CGI->new();
print $query->header(
-expires => 'Sat, 26 Jul 1997 05:00:00 GMT',
-Pragma => 'no-cache',
-Cache_Control => join(', ', qw(
private
no-cache
no-store
must-revalidate
max-age=0
pre-check=0
post-check=0
))
);
}
Apache httpd.conf
<FilesMatch "\.(html|htm|js|css|pl)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
注意: もしくは使用のhtmlタ、ブラウザを無視し、キャッシュされます。
ていただきたいと思いると指摘していればしないようにするためキャッシュのみに動的なコンテンツの追加者の追加ヘッダーとなるべきプログラム.
私は編集中の設定ファイルのプロジェクトを追加no-cacheヘッダに、キャッシュを無効に静的コンテンツではないが、通常ることが望ましい。応答ヘッダを修正コードを確保する画像のスタイルのファイルをキャッシュします。
このアプローチで明らかなものも見逃せません。
別のないよう注意する。ご注意をClearHeaders方法からhttpresponseに対してクラスです。で過ごせばよいかを教えてくれる打ち身-くじきご利用の場合でむやみに.いていきました。
後に残念にActionFilterAttributeイベントの影響清算参加者すべてのヘッダーがすべてのセッションデータデータTempData保管します。であり、リダイレクトからのアクションにはない明確なヘッダがリダイレクトのために設立されました。
第二は思うすべての利用ClearHeaders方法です。難削除ヘッダます。設定キャッシュ-Controlヘッダの適正を使用しているこのコード:
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.AppendCacheExtension("no-store, must-revalidate");
無かったのですが、そんな夢の <head><meta>
ます。追加HTTPキャッシュ関連のパラメータを直接以外のHTMLのdoc)は実際の作業でした。
サンプルコードをPythonで使用web.py web.header
電話おります。私は意図的に編集私の個人的不明のコードです。
import web import sys import PERSONAL-UTILITIES myname = "main.py" urls = ( '/', 'main_class' ) main = web.application(urls, globals()) render = web.template.render("templates/", base="layout", cache=False) class main_class(object): def GET(self): web.header("Cache-control","no-cache, no-store, must-revalidate") web.header("Pragma", "no-cache") web.header("Expires", "0") return render.main_form() def POST(self): msg = "POSTed:" form = web.input(function = None) web.header("Cache-control","no-cache, no-store, must-revalidate") web.header("Pragma", "no-cache") web.header("Expires", "0") return render.index_laid_out(greeting = msg + form.function) if __name__ == "__main__": nargs = len(sys.argv) # Ensure that there are enough arguments after python program name if nargs != 2: LOG-AND-DIE("%s: Command line error, nargs=%s, should be 2", myname, nargs) # Make sure that the TCP port number is numeric try: tcp_port = int(sys.argv[1]) except Exception as e: LOG-AND-DIE ("%s: tcp_port = int(%s) failed (not an integer)", myname, sys.argv[1]) # All is well! JUST-LOG("%s: Running on port %d", myname, tcp_port) web.httpserver.runsimple(main.wsgifunc(), ("localhost", tcp_port)) main.run()
このリンクを事例とキャッシュ:
http://securityevaluators.com/knowledge/case_studies/caching/
概要によれば、第条、 Cache-Control: no-store
作品Chrome、Firefoxとが打ち出されている。-IEを受け入れその他の体制が、ChromeやFirefoxなのです。のリンクは良い読みの歴史のキャッシュおよび記録証のコンセプト。