Rails 3.2.15“无法验证CSRF令牌真实性”,但令牌存在

时间:2013-12-18 08:31:48

标签: ruby-on-rails security csrf

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

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

我找不到一个好的答案。

2 个答案:

答案 0 :(得分:3)

我这是在JS被禁用的时候吗?我通常遇到这个问题,并且在表格标签中包含authenticity_token: true为我解决了这个问题。 The docs更好地解释它。

  

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

答案 1 :(得分:1)

我遇到了同样的问题。我能够通过添加我的turbolinks样式表和javascripts来修复它。

尝试添加到application.html.erb head标记:

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