我需要在页面访问之间存储分页组件的状态(特别是我需要保存当前查看的页面、每页显示的项目数以及过滤/搜索条件文本)。
起初我考虑使用 localStorage 创建客户端本地会话。但这在 IE8 中不起作用,所以我在 IE8 中回退到使用会话 cookie。但过滤/搜索条件是敏感数据,因此会话 cookie 是不可接受的。
现在我正在考虑使用服务器端会话存储,但我想让实现透明。这个想法是创建一个名为“本地会话”的全局 javascript 对象(或 jQuery 插件)。本地会话实现将随每个请求发送其内容(使用 jQuery AJAX beforeSend 回调)。因此,每个请求都会发送客户端“本地会话”的新状态。
服务器将在每个新呈现的页面中包含所有本地会话数据(即仅用于非 AJAX 响应)。
我正在使用 ASP.NET MVC,很容易创建一个全局过滤器来收集这个“本地会话”数据并将其存储在服务器端会话中。
两个问题:
- 在 javascript 对象中存储敏感数据是否比在会话 cookie 中存储这些数据更安全?
- 将本地会话内容作为标头发送是个好主意吗(我可以做一些优化,只在它实际更改时发送,甚至只发送更改)。
- 实施此要求的任何其他建议?
注意:使用历史 API 在 IE8 中不起作用,它也不是我所需要的(即使我通过链接返回页面,而不是单击 BACK 按钮,页面状态也应该保持不变)。
注意:如果解决方案在禁用 cookie 时能正常工作,那就太好了,但这不是严格的要求。