【发布时间】:2011-10-08 14:33:30
【问题描述】:
我正在尝试使用 Sinatra 中的重定向和会话来在站点周围传递一些数据。这是一个简化的示例,使用 PrettyPrint 进行调试:
require 'pp'
require 'rubygems'
require 'sinatra'
enable :sessions
get '/' do
session[:foo] = '12345'
puts 'session1'
pp session
redirect to('/redir')
end
get '/redir' do
puts 'session2'
pp session
'hello world'
end
查看 Thin 的输出,我明白了:
>> Listening on 0.0.0.0:4567, CTRL+C to stop
session1
{"session_id"=>
"ea587d8afdcb2ada64f9b17cdd1fbae7b192dee5dfc2999ff9d323f1528f6a0f",
"foo"=>"12345"}
127.0.0.1 - - [19/Jul/2011 10:33:24] "GET / HTTP/1.1" 302 - 0.0042
session2
{}
127.0.0.1 - - [19/Jul/2011 10:33:24] "GET /redir HTTP/1.1" 200 11 0.0004
我在文档中看到的所有内容都表明这应该可以正常工作。事实上,即使我直接请求它,我也从来没有得到任何/redir 的会话数据,并且会话仍然存在,正如您对/ 的后续请求所期望的那样。
想法?
【问题讨论】:
-
Sinatra 会话正在使用 cookie。您是否尝试过监控您的 HTTP 标头(例如使用 Firebug)以确保 cookie 进出?也看看这个stackoverflow.com/questions/5631862/…和这个stackoverflow.com/questions/5693528/how-to-use-sinatra-session
标签: ruby session redirect sinatra thin