我收到此错误消息:无法验证CSRF令牌真实性
虽然当我查看日志时,我可以看到客户端确实将令牌发送到服务器。
I, [2015-05-31T16:40:28.832719 #30768] INFO -- : Parameters: {"utf8"=>"✓", "authenticity_token"=>"E1GjDUm3LomswskJKg72HjJz7fQ5BOWceGwAauq5B48=", "company"=>{"work_time_start"=>"8", "work_time_end"=>"18", "time_rounding"=>"15", "weekends"=>"6,0", "overlap"=>"1", "week_start"=>"1", "currency"=>"USD", "number_format"=>"12,345.00", "date_format"=>"MM/DD/YYYY", "time_format"=>"12-hour (06:00 PM)"}, "commit"=>"Save"}
W, [2015-05-31T16:40:28.833604 #30768] WARN -- : Can't verify CSRF token authenticity
I, [2015-05-31T16:40:28.837829 #30768] INFO -- : Completed 422 Unprocessable Entity in 5ms (ActiveRecord: 0.0ms)
当我查看发送给客户端的HTML时,我看到完全相同的标记:
在简单的形式部分:
<input name="authenticity_token" type="hidden" value="E1GjDUm3LomswskJKg72HjJz7fQ5BOWceGwAauq5B48=" />
还有元数据:
<meta content="authenticity_token" name="csrf-param" />
<meta content="E1GjDUm3LomswskJKg72HjJz7fQ5BOWceGwAauq5B48=" name="csrf-token" />
为什么服务器拒绝令牌?
编辑:我已经有&lt;%= csrf_meta_tag%&gt;在我的布局中。如您所见,令牌也随发送请求一起发送,因此令牌存在于客户端并与请求一起发送。它也是服务器发送的相同令牌(参见我的解释的第二部分)。
Edit2:更多信息:在Firefox中尝试过此功能。之后我尝试在IE中进行私人会话,并且它也有效。所以似乎有一个cookie阻止某些东西。
答案 0 :(得分:1)
就我而言,它是生产服务器上遗忘的rake assets:precompile
。一切都在开发中运作良好,而不是在生产中。由于在这个特定的情况下,我没有使用资产管道,我错过了预编译的应用程序.js当然会导致turbo-links出现问题。
答案 1 :(得分:0)
我知道这听起来很可怜,但经过一段时间的努力,我重新启动了电脑,现在一切都工作得很好¯_(ツ)_ /¯。