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

Jor*_*vas 2 ruby subdomain ruby-on-rails csrf

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

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

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

AccessController中的ActionController :: InvalidAuthenticityToken#attempt_login

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

这让我觉得该应用会将子域检测为Forgery尝试.

有没有办法将子域列入白名单或修复此问题而不在我的应用程序上禁用CSRF保护?

opt*_*sta 6

我在Rails 5,DeviseNginxSSL的组合中遇到了类似的问题.

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

使用curl我测试这只是在HTTPS上的问题,但一切都在HTTP上运行良好.

在一天结束时,我唯一能解决这个问题的方法是

server {
  location @app {
    ...

    proxy_set_header X-Forwarded-Proto https;

    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

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