我们的生产服务器已经产生了无效的真实性 token 错误已有几个月了。在几乎所有发送(PUT | POST | DELETE)请求的表单上都会产生错误。有时会发生错误,有时却不会。似乎没有韵律或原因。该错误本身并不经常发生,但是对我们来说却是一个忧虑。以下是导致此错误的典型形式的示例。
<form class="button_to" method="post" action="/lesson_progress_trackers/333">
<input type="hidden" name="_method" value="patch">
<input class="finish-lesson-button" type="submit" value="Done!">
<input type="hidden" name="authenticity_token" value="Qd3FsJZY2UXR9vahuFmaY5rrqA+J5xzGpl4cGI2Vwerx8PZPQtDMugz6oqoe3iviC+/U5zTYPdeX3apwbap09E==">
<input type="hidden" name="completed" value="true">
</form>
到目前为止,这是我发现的。
protect_from_forgery with: :exception
。 最终,我想弄清楚该如何解决。我的第一步是成功重现该错误,但我什至无法做到这一点。我的问题是:我该怎么做才能弄清楚是什么原因造成的?我没有其他选择了。谢谢!
最佳答案
Dunno如果为时已晚,无法使用,但我遇到了同样的问题。我能够通过以下方式复制:
InvalidAuthenticityToken
异常。 我认为发生这种情况是因为两个选项卡共享一个 session ,即打开新选项卡时创建的 session 。但是,旧选项卡在登录表单中仍然具有旧 session 中的csrf token 。当新的 session cookie和旧的csrf token 一起提交时,它们不匹配,因此会引发错误。
除了更优雅地处理错误,使用户看不到令人困惑的错误页面外,我不确定如何真正解决此问题。
顺便说一句,我正在使用devise,但我认为它不是特定于Devise的。
关于ruby-on-rails - 调试随机无效的真实性 token 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40388139/