ページ アクセス間でページング コンポーネントの状態を保存する必要があります (具体的には、現在表示されているページ、ページごとに表示するアイテムの数、およびフィルター/検索基準テキストを保存する必要があります)。
最初は、localStorage を使用してクライアント側のローカル セッションを作成することを考えました。しかし、これは IE8 では機能しないため、IE8 ではセッション Cookie を使用するようにフォールバックします。ただし、フィルター/検索基準は機密データであるため、セッション Cookie は受け入れられません。
今、サーバーサイドのセッションストレージの利用を考えているのですが、実装を透過的にしたいと思っています。アイデアは、「ローカル セッション」と呼ばれるグローバルな JavaScript オブジェクト (または jQuery プラグイン) を作成することです。ローカル セッションの実装は、リクエストごとにコンテンツを送信します (jQuery AJAX beforeSend コールバックを使用)。したがって、すべてのリクエストは、クライアントの「ローカル セッション」の新しい状態を送信します。
サーバーは、新しくレンダリングされた各ページにすべてのローカル セッション データを含めます (つまり、非 AJAX 応答の場合のみ)。
ASP.NET MVC を使用していますが、この「ローカル セッション」データを収集してサーバー側セッションに格納するグローバル フィルターを簡単に作成できます。
2 つの質問:
- このデータをセッション Cookie に保存するよりも、機密データを javascript オブジェクトに保存する方が安全ですか?
- ローカル セッション コンテンツをヘッダーとして送信することをお勧めします (最適化を行って、実際に変更された場合にのみ送信するか、変更のみを送信することもできます)。
- この要件を実装するための他の提案はありますか?
注: history API の使用は IE8 では機能しません。また、必要なものでもありません ([戻る] ボタンをクリックするのではなく、リンクをたどってページに戻った場合でも、ページの状態を保持する必要があります)。
注: Cookie が無効になっているときにこのソリューションが機能するのであればよいのですが、これは厳密な要件ではありません。