Rails ActionController :: InvalidAuthenticityToken错误

时间:2014-11-08 17:36:02

标签: ruby-on-rails

我的rails应用程序不时会在随机createupdate操作中向我发送ActionController :: InvalidAuthenticityToken的错误报告。我的头标记中有csrf_meta_tags,99%的请求都有效。

在文档中,我看到的不是我可以尝试protect_from_forgery with: :null_session,但是此选项仅适用于API。

我不确定该怎么做。你有什么建议吗?

我使用的是Rails 4.1但旧版本遇到了同样的问题。

2 个答案:

答案 0 :(得分:0)

执行custom Ajax时必须如此。您必须明确传递csrf令牌。这样的事情对我来说差不多90%。

$.ajax your_url ,
   beforeSend: (xhr) ->
      xhr.setRequestHeader "X-CSRF-Token", $("meta[name=\"csrf-token\"]").attr("content")

是的,建议不要使用

 protect_from_forgery with: :null_session

除非您有某种机制来区分好的和欺诈性的请求。在api中,我们通常会有一些token来帮助验证请求。

答案 1 :(得分:0)

如果您将session_id存储在Cookie中,则这些请求可能来自已禁用Cookie的用户。事实上,他们甚至无法登录,因为CSRF令牌存储在会话中。