Rails 5 尝试从透明重定向的子域登录时,真实性令牌无效

Rails 5 Invalid Authenticity Token when trying to login from transparently redirected subdomain

我在端口 12003 上有一个 Rails 5 应用程序 运行,我配置了一个子域以透明地重定向到该端口,如下所示:

https://test.example.com => https://example.com:12007

问题是当我尝试登录或执行需要来自子域的真实性令牌的操作时,应用程序抛出此错误:

ActionController::InvalidAuthenticityToken in AccessController#attempt_login

当我尝试从包含端口的 url 执行操作时,应用程序不会抛出它:http://example.com:12007

这让我认为该应用将子域检测为伪造尝试。

有没有办法在不禁用我的应用程序的 CSRF 保护的情况下将子域列入白名单或解决此问题?

我在 Rails 5DeviseNginx[ 的组合中遇到了类似的问题=30=] 与 SSL.

简单地关闭 CSRF 保护导致 无法通过设计在 中登录 in/sign(会话未更改,登录重定向回 root 就好像什么都没发生)。

使用 curl 我测试了这 仅在 HTTPS 上存在问题,但 在 HTTP 上一切正常。

最终为我解决了这个问题的唯一线路是

server {
  location @app {
    ...

    proxy_set_header X-Forwarded-Proto https;

    ...
  }
}

在 Nginx 站点配置中 (/etc/nginx/sites-available/default)。