Rails 请求跨域对象与操作详解
1. 跨请求的对象与操作概述
在处理请求和响应时,除了孤立地看待它们,还需要考虑跨请求的状态管理。虽然大部分持久化状态存储在数据库中并通过 Active Record 访问,但仍有一些状态需要不同的管理方式。比如在 Depot 应用中,购物车本身存储在数据库,但当前购物车的信息通过会话管理;闪存通知用于在重定向后向下一个请求传递消息;回调则用于从 URL 中提取区域设置数据。
2. Rails 会话
2.1 会话的基本概念
Rails 会话是一种类似哈希的结构,能够在请求之间持久化。与原始 cookie 不同,会话可以存储任何可序列化的对象,这使得它非常适合在 Web 应用中保存状态信息。例如,在商店应用中,可以使用会话在请求之间保存购物车对象。Rails 会在每个请求处理结束时保存购物车,并在处理新请求时恢复正确的购物车。
2.2 会话数据的存储位置
会话数据的存储有两种选择:
- 作为 cookie 发送到客户端 :这是 Rails 的默认方式。它会对内容进行加密,用户无法查看或篡改,但大小限制为 4KB,且会增加带宽消耗,不过服务器管理和清理的工作较少。
- 存储在服务器上 :设置较为复杂,通常很少需要。Rails 会创建一个 32 位十六进制字符的会话 ID 作为 cookie 存储在用户浏览器中,通过该 ID 在服务器上的持久化存储中查找会话数据。请求处理时,Rails 会反序列化数据并存储在控制器的会话属性中,处理结束后再将数据写回存储。
超级会员免费看
订阅专栏 解锁全文
833

被折叠的 条评论
为什么被折叠?



