我的rails应用程序不时会在随机create
或update
操作中向我发送ActionController :: InvalidAuthenticityToken的错误报告。我的头标记中有csrf_meta_tags
,99%的请求都有效。
在文档中,我看到的不是我可以尝试protect_from_forgery with: :null_session
,但是此选项仅适用于API。
我不确定该怎么做。你有什么建议吗?
我使用的是Rails 4.1但旧版本遇到了同样的问题。
答案 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令牌存储在会话中。