Rails 4.2 InvalidAuthenticityToken 错误,但仅在生产中

Rails 4.2 InvalidAuthenticityToken error, but only in production

我正在制作这个使用(或多或少)来自 https://www.railstutorial.org/book 的会话管理代码的小应用程序。

它在开发模式下工作正常,如果 运行 在我的开发机器上在生产模式下工作。当我部署到机器 运行 nginx 和 Phusion Passenger 时,我开始在每个请求中获取 InvalidAuthenticityToken,其中使用了令牌(例如 method: delete 的表单和链接)。

我已验证令牌已生成并随请求一起发送。

我注意到一件事。 / 上的应用程序主要区域向所有人开放,不需要任何类型的登录。需要登录的区域在/admin。开发中运行时,会生成一个会话cookie,路径为/。部署后,有两个会话 cookie,一个用于 /,一个用于 /admin。我怀疑 CSRF 令牌是使用一个会话生成的,然后使用另一个会话进行验证。

这听起来合理吗?我将如何进一步调查并修复它?

提前致谢。

这似乎与 Phusion Passenger 5 beta 中有关 cookie 的错误有关:

Session being emptied on POST requests in 5.0.0-beta2

降级到 4.0.57 解决了问题。