我有一个付款页面,当用户提交时,它捕获付款并定向到一个感谢页面。问题是,当用户单击返回时,浏览器会将他们带回到之前提交的包含支付表单和所有内容的页面。
如何阻止用户访问上一页?
谢谢
@James,把这个方法放到你的应用程序控制器中,并在before_action回调时调用这个方法,就像-
before_action :set_cache_buster
,然后在protected方法中定义动作,如->
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头禁用浏览器缓存。这就是秘诀:
Cache-Control: no-cache, max-age=0, must-revalidate, no-store
单独来看,这些Cache-Control属性中的每一个似乎都可以防止缓存。实际上,在大多数浏览器中,无缓存和无存储通常是可以互换的。但是,对于后退按钮缓存,Firefox只会在指定no-store时禁用此缓存。为了安全起见并保证跨浏览器兼容性,您应该使用所有四个属性。
有关更多信息,请参阅链接- Pragma和Cache-Control头之间的区别?
特定页面:
添加回调到特定的页面,只有一个选项,如:
before_action :set_cache_buster, only: [:your_action_name]