【问题标题】:Prevent user going back and viewing previously submitted form Rails防止用户返回并查看之前提交的表单 Rails
【发布时间】:2015-08-04 19:12:21
【问题描述】:

我有一个付款页面,当用户提交时,它会捕获付款并指向感谢页面。问题是当用户点击返回时,浏览器会将他们带回到之前提交的页面,其中包含支付表单和所有内容。

如何阻止用户访问上一页?

谢谢

【问题讨论】:

    标签: html ruby-on-rails-3


    【解决方案1】:

    @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 标头禁用浏览器缓存。这是秘密:

    Cache-Control: no-cache, max-age=0, must-revalidate, no-store

    单独来看,这些 Cache-Control 属性中的每一个似乎都可以防止缓存。实际上,在大多数浏览器中,no-cache 和 no-store 通常是可以互换的。但是,特别是对于后退按钮缓存,如果指定了 no-store,Firefox 只会禁用此缓存。为了安全起见并保证跨浏览器兼容性,您应该使用所有四个属性。

    有关更多信息,请参阅链接 - Difference between Pragma and Cache-Control headers?

    具体页面:

    在特定页面上添加该回调,唯一的选项如下:

    before_action :set_cache_buster, only: [:your_action_name]
    

    【讨论】:

    • 非常感谢。由于这是在我的应用程序控制器中,它不会影响所有页面的缓存,而不仅仅是支付页面?干杯
    • 是的,对于特定页面,您可以在该页面上添加该过滤器!
    • 具体页面是如何完成的?我应该将它放在该页面的自定义控制器操作中吗?
    • 是的,所以我试过了,但它在本地不起作用。我仍然可以点击返回按钮并查看上一页和输入的信息
    • 我希望这会奏效,如果有任何进一步的疑问,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    相关资源
    最近更新 更多