【发布时间】:2014-01-06 07:59:12
【问题描述】:
我有一个带有 remote: true 的 form_tag。供会员订阅时事通讯。
我的布局中有“csrf_meta_tags”。当我提交表单时,我收到“无法验证 CSRF 令牌真实性”警告。我要提一下csrf_token在布局和表单中都存在。
我找不到一个好的答案。
【问题讨论】:
标签: ruby-on-rails security csrf
我有一个带有 remote: true 的 form_tag。供会员订阅时事通讯。
我的布局中有“csrf_meta_tags”。当我提交表单时,我收到“无法验证 CSRF 令牌真实性”警告。我要提一下csrf_token在布局和表单中都存在。
我找不到一个好的答案。
【问题讨论】:
标签: ruby-on-rails security csrf
当JS被禁用时我会这样吗?我通常有这个问题,在表单标签中包含authenticity_token: true 为我解决了这个问题。 The docs解释得更好。
:authenticity_token - 在表单中使用的真实性令牌。仅当您需要传递自定义真实性令牌字符串或根本不添加authentity_token 字段(通过传递false)时使用。远程表单可以通过设置 config.action_view.embed_authenticity_token_in_remote_forms = false 来省略嵌入的真实性令牌。当您对表单进行片段缓存时,这很有帮助。远程表单从元标记中获取真实性,因此除非您支持没有 JavaScript 的浏览器,否则嵌入是不必要的。
【讨论】:
我遇到了同样的问题。我可以通过添加我的 turbolinks 样式表和 javascript 来修复它。
尝试添加到 application.html.erb 头标签:
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
【讨论】: