4

ASP.NET MVC では、iOS でバック キャッシュとフォワード キャッシュを無効にする際に問題が発生しています。セキュリティ上の理由から、サイト内のどのページにも戻るボタンと進むボタンからアクセスできるようにしたくありません。設定を試みました:

[OutputCache(NoStore = true, Duration = 1)]

他にもたくさんありますが、何も機能しません。iOS も onunload イベントを無視するため、onunload イベントでは何もできません。何か案は?

4

1 に答える 1

4

これを最終的にどのように解決したかは、レイアウトビューでこれを行うことです:

<script type="text/javascript">
     @Html.Raw("var freshPage = true;")
 </script>

C# コードを実行すると、javascript 変数が true に設定され、ページが新しく、コントローラー コードを通過したことがわかります。次に、これをグローバル JavaScript ファイルに入れ、ページが表示されるたびにその変数をチェックします。

window.addEventListener('popstate', function () {
  // If fresh page is false that means it is a cached page, remove html and reload page.
  if (!freshPage) {
    $('html').remove();
    window.location.reload();
  } else {
    freshPage = false;
  }
});

これは、ページがキャッシュから読み込まれたときに iOS が起動することを確認できた唯一のイベントです。これにより、ユーザーがその変数をチェックして戻るボタンと進むボタンを使用している場合でも、iOS は常にサーバー側のコードを実行するように強制されます。それが最初のページの読み込みである場合、新しいページが true であることがわかり、それを false に反転します。次に、ユーザーが前後に移動してこのページに戻ると、このコードが実行されます。C# コードを実行しなかったため freshPage が false であることを確認し、html を強制終了して、ページを強制的にリロードします。

于 2014-04-17T15:43:47.793 に答える