Rails5 "Can't verify CSRF token authenticity" 生产环境中子域的问题

Rails5 "Can't verify CSRF token authenticity" issue with subdomain in production environment

我有一个子域:

https://admin.mysite.com

在我的生产环境中,当我使用设计表单登录时,出现错误 "Cant verify CSRF token authenticity"。

我对 google 进行了大量研究,并了解到我需要对 initializers/session_store.rb 进行更改。我的默认 session_store.rb 文件包含:

Rails.application.config.session_store :cookie_store, key: '_myapp_session'

有人说 :domain 应该设置为“.mysite.com”,有人说它应该是 :all。我已经尝试了所有组合,包括 tld 选项,但我仍然收到该错误。

:cookie_store,
{
  :key => '_myapp_session',
  :domain => :all, # :all defaults to da tld length of 1, '.web' has length of 1
  :tld_length => 2 # Top Level Domain (tld) length -> '*.myapp.web' has a length of 2
}

请帮忙,谢谢。

在尝试了很多组合之后,我发现我必须在我的 nginx 文件中包含 ssl 设置并且根本不需要更改 session_store.rb。

我在我的 nginx 文件中添加了以下行,一切似乎都运行良好。

proxy_set_header X-Forwarded-Ssl on;

注意:如果您有许多特定域并且您的应用程序要求很复杂,那么您可能必须更改此文件,但在我的情况下,我只有这个子域,甚至没有一个处理我网站的主域,我很满意。在我的例子中,Rails5 自动处理了它,除了我的 nginx 文件中的 SSL 设置外,我不需要更改我的应用程序中的任何内容。

我希望这对其他人有所帮助,:)。