gpt4 book ai didi

ruby-on-rails - 当 appcache 存在时使用 AJAX 和 Rails 设置 session 变量

转载 作者:可可西里 更新时间:2023-11-01 13:39:33 25 4
gpt4 key购买 nike

对执行此操作的“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 显示原始 user_id,第二个显示 user_id,因此它看起来工作正常。但是,当我导航到另一个页面时,所有 session 信息仍然是原始 user_id 的信息。我做错了什么?

我感觉这与本地 session cookie 未更新有关。

更新

肯定与缓存有关。我可以转到该页面,清除浏览器缓存(我使用 Chrome 作为我的浏览器),然后运行 ​​ajax 调用并且它可以正常工作一次。之后,我再次被锁定到(新)旧用户。

更新 2

看起来它是专门与 html5 应用程序缓存有关的。如果我终止应用程序缓存或从不包含 manifest 的页面运行脚本,它就可以正常工作。仍然无法让它在缓存页面上正常工作。

从缓存页面向服务器发送的 session ID 与非缓存页面相同,并且响应 header 相同。但是来自本地缓存页面的每个请求都会导致服务器以旧 session 信息启动。

最佳答案

http://diveintohtml5.ep.io/offline.html

我可以看出您遇到了明显的缓存问题,并且更改 session 本身不会清除 list 。缓存是持久的,直到缓存项被取消缓存或 list 失效。

另一个用户以不同的方式遇到了同样的问题:他们在 URI 中传递他们的 session 数据,并最终在用户每次访问时缓存一个新的应用程序。他们的解决方案可能有用:

How to clear Application cache (HTML5 feature) using JavaScript?

你也可以看看这个,关于各种存储缓存: http://sharonminsuk.com/blog/2011/03/21/clearing-cache-has-no-effect-on-html5-localstorage-or-sessionstorage/

最后,关于使用 JS 更新缓存文件的资源: http://www.html5rocks.com/en/tutorials/appcache/beginner/这是我在检查 session ID 是否已更改后使用的最后一个:更新 session ID,然后确认更改,然后清除并重新下载缓存文件。

祝你好运。我希望这对一些人有所帮助。

关于ruby-on-rails - 当 appcache 存在时使用 AJAX 和 Rails 设置 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com