【发布时间】:2011-10-20 08:57:09
【问题描述】:
对“updateUser”进行 ajax 调用:
puts session[:user_id]
user = User.find(params[:user_id])
if user
session[:user_id] = user.id
session[:user_name] = user.first_name + " " + user.last_name
puts session[:user_id]
render text => "Success.
end
第一个puts 显示original user_id,第二个显示new user_id,因此它看起来工作正常。但是,当我导航到另一个页面时,所有会话信息仍然是 original user_id 的信息。我做错了什么?
我感觉这与本地会话 cookie 未更新有关。
更新
肯定与缓存有关。我可以转到该页面,清除浏览器缓存(我使用 Chrome 作为我的浏览器),然后运行 ajax 调用,它可以正常工作一次。之后,我再次被(新)旧用户锁定。
更新 2
看起来这与 html5 应用程序缓存有关。如果我杀死 appcache 或从不包含 manifest 的页面运行脚本,它就可以正常工作。仍然无法在缓存页面上正常工作。
从缓存页面向服务器发送的会话 ID 与非缓存页面相同,并且响应标头相同。但是来自本地缓存页面的每个请求都会导致服务器以旧会话信息启动。
【问题讨论】:
标签: ruby-on-rails ajax html session jquery