是否可以通过隐藏的表单字段传递会话? (即POST)
如果可以,如果可以在每个控制器基础上的标准方法和现场会话之间进行而不丢失信息?
答案 0 :(得分:1)
如果禁用了cookie,CGI:Sessions将自动切换到使用隐藏字段,但是,我不确定Rails中是否支持这种行为。此外,将此行为更改为需要使用隐藏字段可能需要修改CGI:Session。
如果客户端禁用了cookie,则必须将会话ID包含为客户端发送给服务器的所有请求的参数。 CGI :: Session类与CGI类一起将透明地将会话ID添加为使用CGI#form()HTML生成方法生成的所有表单的隐藏输入字段。没有为其他机制提供内置支持,例如URL重写。调用者负责从session_id属性中提取会话ID,并在URL中手动对其进行编码,并将其作为隐藏输入添加到由其他机制创建的HTML表单中。此外,会话到期时间不会自动处理。
因此,应该可以使用这种方法,但据我所知,Rails中不支持它作为一个简单的选项。
要明确的是,即使ActiveRecord会话存储使用cookie,也不要将会话存储与会话数据的处理方式等同起来。
最后,有一段时间有插件支持这种行为,但这些插件已经过时了,似乎不支持Rails 3.请参阅Sessions & Cookies in Ruby on Rails的“非cookie会话”部分