【发布时间】:2011-10-24 16:53:32
【问题描述】:
网络服务器设置:nginx/thin/ruby-sinatra
我使用 ruby 中的会话对象来存储各种信息并返回路径
session[:username] = 'username'
session[:token] = 'token'
session[:error] = ''
session[:return_to] = '/start_page'
问题1:
在我的服务器上,如果客户端是 IE,当我重新加载页面时,会话对象中的所有信息都会丢失。 Firefox 和 Chrome 运行良好。
如果我把保存网页代码放在不同的服务器上,设置相同,我一点问题都没有。所有 3 个浏览器(同一个客户端)都运行良好并记住会话。
设置会出现什么问题?为什么只有IE??
问题2:
在我的服务器上,会话[:session_id] 在我为会话设置一些变量之前不会被初始化,但如果我在不同的服务器上运行相同的代码,会话[:session_id] 在第一次访问时可用。
为什么完全相同的设置会有不同的行为??
【问题讨论】:
-
如果您查看该问题但无法回答,请点赞。它将导致更多的观点和可能的答案。谢谢。
-
您确定两个设置都具有相同版本的 sinatra?它们都以相同的模式运行吗? (生产、开发)。此外,如果您向我们展示更多代码可能会有所帮助。例如,我假设您使用的是 Rack::Session::Cookie。你通过什么选项?
-
我不知道 Rack::Session::Cookie 是什么。除了 Q 中的代码,我使用的只是在 ruby 配置方法中启用 :sessions。
-
我检查了 sinatra 的版本,我有 1.3.1,其他会话记忆机器有 1.2.6。我将我的全部更改为 1.2.6,IE 开始工作!问题1解决了。谢谢。
-
问题仍然是为什么 sinatra 1.3.1 会忘记 IE 会话,是错误还是我遗漏了什么?