30

Webアプリケーションでデバイスを構成しました。次のワークフローに問題があります。

管理パネルにアクセスするには、ログインする必要があります。その後、通常どおりWebアプリの管理パネルに移動します。ログアウトをクリックすると、これまでの動作であるルートページにリダイレクトされます。

このページで奇妙なことが始まります。上記のアクションの後、ブラウザの戻るボタンをクリックすると、キャッシュされた最後のページが表示されます。[更新]をクリックするとリダイレクトされ、ログインしてページにアクセスするように指示されたため、セッションが破棄されましたが、ブラウザの最後の履歴ページを表示したくありません。

これはどのように可能であり、それを防ぐために何ができますか?それはブラウザのキャッシュと関係がありますか?これを修正する唯一の方法は、この動作を防ぐために、ログインしたページからキャッシュを削除することです。どうやってやるの?

4

3 に答える 3

59

キャッシュを防ぐためにページのヘッダーを設定する必要があります。あなたはそのようにそれをすることができます:

  before_filter :set_cache_buster

  def set_cache_buster
    response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
  end

クレジットは、このスレッドの最初の応答に送られます。

于 2012-07-03T17:20:52.733 に答える
5

ブラウザにキャッシュしないように指示することはできますが、それが試みです。

彼らが以前にページを表示した場合、ページを再度表示できないようにするためにできることはほとんどありません。その時点では、ある程度制御できません。

たとえば、ページのHTML(ページを表示するときに実行していること)をダウンロードでき、スクリーンショットなどの撮影を阻止することもできません。

とはいえ、ブラウザのキャッシュはいくつかの(ほとんど?)場合に機能します。MichaelFrederickの回答を参照してください。

于 2012-07-03T19:10:24.823 に答える
3

これは間違いなくキャッシングと関係があります。それに応じて適切なHTTPヘッダーを設定する必要があります。これはおそらくあなたが必要とする答えを持っています:Railsでブラウザページのキャッシュを防ぐ方法

  • ヨハネス
于 2012-07-03T10:31:12.260 に答える