InvalidAuthenticityToken in Rails 5 落后于 Nginx 使用 SSL

InvalidAuthenticityToken in Rails 5 behind Nginx using SSL

我在使用 Rails 5 (beta1) 时遇到了一个非常奇怪的问题,它阻止我安全地提交任何表单。

当 运行 在 Nginx(Ubuntu 12.04 上的 1.4.6)解密 SSL 的反向代理后面的生产模式下,Rails 拒绝我的 CSRF 令牌,尽管它们无效表单提交了正确的标记这一事实。

当我在 Nginx 中关闭 SSL 时一切正常。

如有任何帮助,我们将不胜感激。

通过在 Nginx 中添加更多 header 来修复(X-Forwarded-Ssl onX-Forwarded-Port 443X-Forwarded-Host "your hostname"X-Forwarded-Proto https)。问题实际上出在 ActionController 检查 CSRF 令牌的新方法中(将 request.base_url 与原点 header 进行比较)