[解決済み] ブラウザでのiframeキャッシュの禁止
質問
Firefox と Safari が iframe のコンテンツをキャッシュするのを防ぐにはどうしたらよいですか?
私は、別のサイトのページへの iframe を持つ単純な Web ページを持っています。外部ページと内部ページの両方が、キャッシュを防ぐために HTTP レスポンス ヘッダーを持っています。ブラウザで "back" ボタンをクリックすると、外部ページは適切に動作しますが、何があっても、ブラウザは常に iframed ページのキャッシュを取得します。IE は問題なく動作しますが、Firefox と Safari は私に問題を与えています。
私のウェブページはこのような感じです。
<html>
<head><!-- stuff --></head>
<body>
<!-- stuff -->
<iframe src="webpage2.html?var=xxx" />
<!-- stuff -->
</body>
</html>
は
var
変数は常に変化します。iframe の URL は変更されていますが (したがって、ブラウザはそのページに対して新しいリクエストを行う必要があります)、ブラウザはキャッシュされたコンテンツを取得するだけです。
HTTP リクエストとレスポンスのやり取りを調べてみたところ、外側のページが
<iframe src="webpage2.html?var=222" />
を含んでいても、ブラウザは
webpage2.html?var=111
.
今まで試したのはこんな感じです。
- iframe の URL をランダムな変数値で変更する
- 外部のウェブページに Expires、Cache-Control、および Pragma ヘッダを追加する
- 内側のウェブページに Expires、Cache-Control、および Pragma ヘッダを追加する。
同一生成元ポリシーに阻まれ、JavaScriptの技ができない。
アイデアが尽きてしまいました。ブラウザがiframedコンテンツをキャッシュしないようにする方法をご存知の方はいらっしゃいますか?
更新
Daniel が提案したように Fiddler2 をインストールして別のテストを行ったのですが、残念ながらまだ同じ結果が得られています。
これは私が実行したテストです。
-
外側のページが乱数を生成するには
Math.random()
で乱数を生成する。 - 外側のページには乱数が表示されます。
- 外側のページがiframeを呼び出し、乱数を渡します。
- 内部ページが乱数を表示する。
このテストでは、どのページが更新され、どのページがキャッシュされているかを正確に確認することができます。
視覚テスト
簡単なテストとして、ページを読み込んで、別のページに移動し、quot;back.quot; を押してみました。
元のページ。
- 外側のページ 0.21300034290246206
- 内側のページ。0.21300034290246206
ページを離れ、そして戻る。
- ページの外側。0.4470929019483644
- 内側のページ 0.21300034290246206
これは、外部ページが URL に異なる GET パラメータを使用して呼び出しているにもかかわらず、内部ページがキャッシュされていることを示しています。何らかの理由で、ブラウザは iframe が新しい URL を要求しているという事実を無視し、単に古いものをロードしています。
Fiddler テスト
案の定、Fiddlerでも同じことが確認されました。
(ページを読み込むと)
外側のページが呼び出されます。HTMLです。
0.21300034290246206
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206" />
http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206 が呼び出されます。
(ページから移動して、戻るを押しています)
外側のページというのは HTMLです。
0.4470929019483644
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.4470929019483644" />
http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206 が呼び出されます。
このテストから、Web ブラウザはページをキャッシュしているのではなく、iframe の URL をキャッシュして、そのキャッシュされた URL に新しいリクエストを作成しているように見えます。しかし、この問題を解決する方法について、私はまだ困っています。
Web ブラウザが iframe の URL をキャッシュしないようにする方法について、どなたかアイデアをお持ちですか?
どのように解決するのですか?
iframe の URL を、iframe の実際のコンテンツを取得し返すプロキシとして機能する、あなたのサイトのページを指すようにします。これで、同一生成元ポリシーに縛られることがなくなります (編集: iframe のキャッシュの問題は防げません)。
関連
-
[解決済み】Blender vs. Unity【終了しました。
-
[解決済み] IFrameからボーダーを取り除く
-
[解決済み] Cypressの場合、テスト前にlocalStorageにトークンをセットする
-
[解決済み] 推奨されるウェブサイトの解像度(幅と高さ)?[クローズド]です。
-
[解決済み] ChromeやIEがサーバーに送信するUser-Agentに "Mozilla 5.0 "が含まれているのはなぜですか?重複
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] Firefox または Chrome ブラウザから HTTP POST リクエストを手動で送信する方法
-
[解決済み] jQuery/JavaScript:iframeのコンテンツにアクセスする
-
[解決済み】全てのブラウザで、Webページのキャッシュを制御するには?
-
[解決済み】MIMEタイプとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン