我有一个付款页面,当用户提交时,它会抓取付款并转到感谢页面。问题是,当用户点击回来时,浏览器会将其带回到之前提交的页面,并附上付款表单。
如何阻止用户访问上一页?
由于
答案 0 :(得分:4)
@James,将此方法放在应用程序控制器中并在before_action回调上调用此方法,如 -
before_action:set_cache_buster
然后在受保护的方法中定义操作,如 - >
protected
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"] = "#{1.year.ago}"
end
要实现此目的,我们只需要使用适当的HTTP标头禁用浏览器缓存。这是秘密:
缓存控制:无缓存,max-age = 0,必须重新验证,无商店
单独来看,每个Cache-Control属性似乎都会阻止缓存。实际上,在大多数浏览器中,no-cache和no-store通常是可互换的。但是,对于后退按钮缓存,Firefox将仅在未指定存储时禁用此缓存。为了安全起见并保证跨浏览器兼容性,您应该使用所有四个属性。
有关详细信息,请参阅链接 - Difference between Pragma and Cache-control headers?
希望你喜欢这个。
特定页面 - >
1)在特定页面上添加该回调,仅使用 - >
等选项before_action:set_cache_buster,仅限:[:your_action_name]