Rails ActionController :: InvalidAuthenticityToken错误
问题描述:
我的Rails应用程序随时会给我发送ActionController :: InvalidAuthenticityToken的随机create
或update
动作的bug报告。我的头标中有csrf_meta_tags
,我的请求中有99%是工作的。Rails ActionController :: InvalidAuthenticityToken错误
在文档中,我看过比我可以试试protect_from_forgery with: :null_session
,但是这个选项只适用于API。
我不知道该怎么做。你有什么建议吗?
我使用的是Rails 4.1,但是我对旧版本有同样的问题。
答
当您执行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
这有助于验证请求。
答
如果您将session_id存储在cookie中,那些请求可能来自禁用cookie的用户。事实上,他们甚至无法登录,因为CSRF令牌存储在会话中。
'ajax'请求? – Nithin 2014-11-08 17:39:09
不,不仅... – 2014-11-08 17:46:21
这是生产吗?他们可能是合法的跨站点伪造攻击。记录所有的事情,甚至是快乐的行为,看看他们是否在应用程序的预期流程中弹出。 – kreek 2014-11-10 20:05:55