【问题标题】:Rails 3.2.15 "Can't verify CSRF token authenticity" although token existsRails 3.2.15“无法验证 CSRF 令牌真实性”尽管令牌存在
【发布时间】:2014-01-06 07:59:12
【问题描述】:

我有一个带有 remote: true 的 form_tag。供会员订阅时事通讯。

我的布局中有“csrf_meta_tags”。当我提交表单时,我收到“无法验证 CSRF 令牌真实性”警告。我要提一下csrf_token在布局和表单中都存在。

我找不到一个好的答案。

【问题讨论】:

    标签: ruby-on-rails security csrf


    【解决方案1】:

    当JS被禁用时我会这样吗?我通常有这个问题,在表单标签中包含authenticity_token: true 为我解决了这个问题。 The docs解释得更好。

    :authenticity_token - 在表单中使用的真实性令牌。仅当您需要传递自定义真实性令牌字符串或根本不添加authentity_token 字段(通过传递false)时使用。远程表单可以通过设置 config.action_view.embed_authenticity_token_in_remote_forms = false 来省略嵌入的真实性令牌。当您对表单进行片段缓存时,这很有帮助。远程表单从元标记中获取真实性,因此除非您支持没有 JavaScript 的浏览器,否则嵌入是不必要的。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。我可以通过添加我的 turbolinks 样式表和 javascript 来修复它。

      尝试添加到 application.html.erb 头标签:

      <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
      <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
      

      【讨论】:

        猜你喜欢
        • 2014-06-16
        • 2017-07-15
        • 2015-07-24
        • 2012-05-08
        • 2015-12-29
        • 2023-03-26
        • 2016-09-17
        • 2012-12-11
        • 2019-07-15
        相关资源
        最近更新 更多