Rails4 ActionController::InvalidAuthenticityToken error

前端 未结 6 2292
醉酒成梦
醉酒成梦 2021-02-13 00:07

I have Rails4 application running in production, and my visitors run occasionally into ActionController::InvalidAuthenticityToken error, which I cant reproduce. I get 2-4 daily

6条回答
  •  情歌与酒
    2021-02-13 00:44

    Any forms generated by Rails (i.e. with form_for and such, not with you putting

    in the template) will have the anti-CSRF token added as a hidden field when it's necessary. If you wrote the form yourself and didn't include the CSRF hidden input, then Rails relies on the CSRF meta tag and JavaScript for things to work. So if you wrote your own form and you didn't include the hidden field and if the client's JavaScript doesn't work for whatever reason, you can get this error. Because the "client's JavaScript doesn't work for whatever reason" clause is a difficult one to detect and debug, I actually intentionally removed the CSRF meta tag on my site. That way if I forgot to include the hidden input, it'll break for everyone (fast fail), I'd find out about it immediately, and I could fix it. I would recommend you do this as well.

    With that being said, I would recommend you look at the access log for these "visitors". Do you see anything odd?

    • Do they access the page that has the form on it immediately before submitting it? If not, maybe they're bots or actual, real-deal CSRF attempts (that's what this is checking for, isn't it? :)).
    • Did they load the form on one EC2 and end up submitting to another? If so, can you turn one EC2 off and see if the errors go away?
    • Did they somehow lose their session? This could be your problem or theirs.

提交回复
热议问题