Joh*_*Del 30 ruby-on-rails browser-cache devise ruby-on-rails-3
我已经在我的Web应用程序中配置了设计.我有以下工作流程的问题:
要访问管理面板,我需要登录.之后,我正常导航到我的网络应用程序的管理面板.当我单击logout时,它会将我重定向到根页面,这是我想要的行为.
奇怪的是,在这个页面中开始,在上面的操作之后,我点击了浏览器的后退按钮,它显示了我的缓存的最后一页.我的会话已被破坏,因为如果我点击刷新它重定向我并提示登录访问该页面,但我不希望能够看到浏览器的最后一个历史页面.
这怎么可能,我该怎么做才能防止它呢?它与浏览器缓存有关吗?解决此问题的唯一方法是从登录页面中删除缓存以防止此行为?我怎样才能做到这一点?
Mic*_*ick 59
您希望设置页面的标题以防止缓存.你可以这样做:
before_filter :set_cache_buster
def set_cache_buster
response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end
Run Code Online (Sandbox Code Playgroud)
信用转到该线程的第一个响应.
您可以尝试告诉浏览器不要缓存内容,但这就是它的意思 - 尝试.
如果他们之前查看过该页面,那么您可以执行的操作几乎无法再次查看该页面 - 此时它有点无法控制.
例如,可以下载页面的HTML(这是他们查看页面时正在做的事情)而且你也无法阻止他们说出截图.
那说浏览器缓存可以在一些(大多数?)情况下工作,参考迈克尔弗雷德里克的答案.